[visual-studio]为什么在我的 32 位应用程序中使用 WIC 失败在 Windows 7 32 位吗?

发布时间: 2014/3/1 3:53:23
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有在 Visual Studio Pro 2012 更新 2 中使用Windows 图像组件的 Win32 c + + 示例应用程序。我的 x86 这个应用程序中创建和测试 Windows 7 X 64 SP1 和 Windows 7 X 86 SP1。它可以正常工作的第一个,但它无法上以后与"类未注册"。

如果我生成相同的代码与 VS2008 它正常工作。

WIC 实例创建示例应用程序中,如下所示:

#include "wincodec.h"
...
case WM_CREATE:
{
IWICImagingFactory *m_pIWICFactory;  
HRESULT hr = S_OK;

CoInitialize(NULL);
// create WIC factory (m_pIWICFactory)
hr = CoCreateInstance(
    &CLSID_WICImagingFactory,
    NULL,
    CLSCTX_INPROC_SERVER,
    &IID_IWICImagingFactory, 
    &m_pIWICFactory);
if (!SUCCEEDED(hr))
    MessageBox(NULL, 
        L"CoCreateInstance(..IID_IWICImagingFactory..) failed!", 
        L"", MB_OK);
else
    MessageBox(NULL, 
        L"CoCreateInstance(..IID_IWICImagingFactory..) succeeded!", 
        L"", MB_OK);

CoUninitialize();
}
break;
...

可能我做错了?

解决方法 1:

因为它的目标是,默认情况下 Windows 8,有VS2012 的重大更改

解决办法是指定 CLSID_WICImagingFactory1 的 instaed CLSID_WICImagingFactory 因为后者将解析为 CLSID_WICImagingFactory2 ,在 Windows 7 中不存在。

那么试试这个

hr = CoCreateInstance(&CLSID_WICImagingFactory1, NULL, CLSCTX_INPROC_SERVER,
         &IID_IWICImagingFactory, &m_pIWICFactory);
官方微信
官方QQ群
31647020