2012-02-23 77 views
0

我想使用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文件被创建。

谢谢。

+0

我想通了,我不得不从UTIL在XercesLib项目/代码转换排除WIN32TransService.cpp。 – gabriel 2012-02-23 10:14:12

回答

0

因为我有同样的问题,这是第一个谷歌命中寻找它一个,我会给出一个答案,尽管它已经有一段时间了,因为你问的问题。 这些是ICU建立在Visual Studio(在VS10工作对我来说)的Xerces-C步骤:

  1. 下载并按照上述方法建立ICU。
  2. 使用VS打开xerces-all.sln解决方案文件。
  3. 选择ICU调试/发布版本配置 - 它为您设置XERCES_USE_TRANSCODER_ICU
  4. 为ICU添加包括和库路径到XercesLib项目的调性质,在该项目的其他连接体的依赖增加了ICU库。
  5. 构建和快乐 - 无需排除WIN32TransService.cpp