我有在Visual Studio Pro 2012 Update 2中使用Windows Image Component的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;
...
我可能做错了什么?
答案 0 :(得分:6)
有一个breaking change in VS2012,因为它默认以Windows 8为目标。
解决方案是指定CLSID_WICImagingFactory1
CLSID_WICImagingFactory
的实例,因为后者解析为CLSID_WICImagingFactory2
,这在Windows 7中不存在。
所以试试这个
hr = CoCreateInstance(&CLSID_WICImagingFactory1, NULL, CLSCTX_INPROC_SERVER,
&IID_IWICImagingFactory, &m_pIWICFactory);