我想使用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