工具集更改为Win XP友好上升_CLSID_WICImagingFactory1

时间:2014-04-29 15:11:33

标签: visual-studio visual-c++ visual-studio-2012

将平台工具集设置为Visual Studio 2012 - Windows XP (v110_xp)后,我收到了错误unresolved external symbol _CLSID_WICImagingFactory1。使用Visual Studio 2012 (v110)工具集一切顺利。如何解决这个问题?

1 个答案:

答案 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