我想使用Visual C++ 2010年表达构建的Xerces C++版本3 ICU
我已经下载ICU源和建造它喜欢它在自述中说,建立的Xerces 3.1.1 ICU。
现在我需要与ICU的二进制文件,我只是用来构建的Xerces。
Xerces站点版本3.1.1的构建说明指出“您也可以选择Xerces-C++库是否应该使用ICU进行代码转换”,但他们没有说明具体如何。我查看了所有构建选项以及唯一发现的内容(也许我错过了某些内容?),这可能与预处理器宏列表有关,我看到以下定义 - XERCES_USE_TRANSCODER_WINDOWS。
我想,也许我需要将其更改为XERCES_USE_TRANSCODER_ICU。这只是一个猜测,所以首先我查看了Xerces代码,并且看到XERCES_USE_TRANSCODER_ICU确实出现(例如,它们检查在包括ICU头文件之前是否定义了它)。
因此,我将XERCES_USE_TRANSCODER_WINDOWS更改为XERCES_USE_TRANSCODER_ICU,将ICU include目录添加到包含目录路径以及所有ICU .lib文件到链接程序依赖项中,并试图构建它。我得到无法解析的外部错误:
PlatformUtils.obj:错误LNK2019:无法解析的外部符号 “公用:__thiscall xercesc_3_1 :: ICUTransService :: ICUTransService(类xercesc_3_1的MemoryManager :: *)”(?? 0ICUTransService @ xercesc_3_1 @@ QAE @ PAVMemoryManager @ 1 @@ Z)在函数“private:static class xercesc_3_1 :: XMLTransService * __cdecl xercesc_3_1 :: XMLPlatformUtils :: makeTransService(void)”中引用(?makeTransService @ XMLPlatformUtils @ xercesc_3_1 @@ CAPAVXMLTransService @ 2 @ XZ) 1> C:\ cpp_lib \的xerces-C-3.1.1 \项目\的Win32 \ VC10 \的xerces-所有\ XercesLib ........... \构建\的Win32 \ VC10 \调试\的xerces-c_3_1D。 DLL:致命错误LNK1120:1周无法解析的外部
Xerces站点提供了更多关于构建具有ICU的Xerces 2.8的具体说明(它不适用于版本3,因为它是通过未提供版本3的脚本完成的)。我也尝试过(尽管我需要使用最新版本),但它也不能很好地工作。没有.dll或.lib文件被创建。
谢谢。
我想通了,我不得不从UTIL在XercesLib项目/代码转换排除WIN32TransService.cpp。 – gabriel 2012-02-23 10:14:12