我有 Win32 C++ 示例应用程序,它使用Windows 图像组件 http://msdn.microsoft.com/en-us/library/windows/desktop/ee719654%28v=vs.85%29.aspx在 Visual Studio Pro 2012 Update 2 中。我为 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;
...
我可能做错了什么?
有一个VS2012 中的重大变化 http://social.msdn.microsoft.com/Forums/en-US/windowswic/thread/e542d34a-a04b-455e-bd5b-957f162bab94因为它默认针对 Windows 8。
解决方案是指定CLSID_WICImagingFactory1
代替CLSID_WICImagingFactory
因为后者决心CLSID_WICImagingFactory2
,Windows 7 中不存在。
所以试试这个
hr = CoCreateInstance(&CLSID_WICImagingFactory1, NULL, CLSCTX_INPROC_SERVER,
&IID_IWICImagingFactory, &m_pIWICFactory);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)