3

我有在 Visual Studio Pro 2012 Update 2 中使用Windows 图像组件的 Win32 C++ 示例应用程序。我为 X86 构建了这个应用程序,并在 Windows 7 X64 SP1 和 Windows 7 X86 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;
...

我可能做错了什么?

4

1 回答 1

6

VS2012有一个重大变化,因为它默认面向 Windows 8。

解决方案是指定CLSID_WICImagingFactory1instaed of,CLSID_WICImagingFactory因为后者解析为CLSID_WICImagingFactory2Windows 7 中不存在的 。

所以试试这个

hr = CoCreateInstance(&CLSID_WICImagingFactory1, NULL, CLSCTX_INPROC_SERVER,
         &IID_IWICImagingFactory, &m_pIWICFactory);
于 2013-05-22T18:40:14.250 回答