将平台工具集设置为Visual Studio 2012 - Windows XP (v110_xp)
后,我收到了错误unresolved external symbol _CLSID_WICImagingFactory1
。使用Visual Studio 2012 (v110)
工具集一切顺利。如何解决这个问题?
答案 0 :(得分:0)
这是因为在某处您使用wincodec.h标头的Windows 8.0 SDK版本构建了一个库:
DEFINE_GUID(CLSID_WICImagingFactory1, 0xcacaf262, ...
DEFINE_GUID(CLSID_WICImagingFactory2, 0x317d06e8, ...
#if(_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)
#define WINCODEC_SDK_VERSION WINCODEC_SDK_VERSION2
#define CLSID_WICImagingFactory CLSID_WICImagingFactory2
#else
#define WINCODEC_SDK_VERSION WINCODEC_SDK_VERSION1
#endif
对于Windows XP,您必须使用Windows 7.1A SDK,这是" v110_xp"平台工具集。只有:
DEFINE_GUID(CLSID_WICImagingFactory, 0xcacaf262, ...
然后,在链接应用程序时,您将链接到未定义CLSID_WICImagingFactory1或CLSID_WICImagingFactory2的uuid.lib的Windows 7.1A SDK版本。
Windows 8.x SDK具有两个版本的工厂的原因是允许您在Windows 8.x或Windows 7 SP1上使用WIC2版本(KB 2670838),但是如果构建Windows Vista或Windows 7 RTM您必须使用WIC1。
有关WIC2的更多详细信息,请参阅此blog post。有关使用Windows XP平台工具集的重要详细信息,请务必阅读此Visual C++ team blog post和此DirectX SDK blog post。