2010-03-10 99 views
0

Visual Studio 2005鏈接與提升無法解析的外部鏈接錯誤

我與boost庫發行版本1_33_1鏈接。

我不斷收到此鏈接錯誤。

libboost_thread-vc80-mt-sgd-1_33_1.lib(once.obj) :error LNK2001: unresolved external symbol "public: void __thiscall std::_String_base::_Xran(void)const " ([email protected][email protected]@@QBEXXZ) 

有沒有人有任何建議?

C:\boost_1_42_0>bjam --build-dir=d:\boost_1_42 --build-type-complete --toolset=msvc-8.0 address-model=32 architecture=x86 

我得到一些下列錯誤:

非常感謝,

編輯======

使用這些開關重新編譯Boost庫後

1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" ([email protected]@[email protected]@@Z) already defined in LIBCMTD.lib(typinfo.obj) 
1>msvcrtd.lib(MSVCR80D.dll) : error LNK2005: __wassert already defined in LIBCMTD.lib(wassert.obj) 

任何人有任何想法?

非常感謝,

+0

您的項目是32位還是64位? – 2010-03-10 08:56:07

+0

我的項目是32位。謝謝 – ant2009 2010-03-10 09:28:08

+0

只是一個猜測,因爲我曾經想將32位升級庫鏈接到一個64位項目,它不工作,必須用64位編譯該升級庫。但是,也許你的升壓庫是用64位構建的... – 2010-03-10 09:31:45

回答

1

你不必設置地址模式,並明確在構建32位架構的第一。您的通話也有錯誤:--build-type-complete應該是--build-type=complete。如果我沒看錯你的電話建立絕對的所有庫,包括文件系統,正則表達式等
很明顯,你只需要提高::線程,所以我建議大家儘量將此號召:

C:\boost_1_42_0>bjam --build-dir=d:\boost_1_42 --build-type=complete --toolset=msvc-8.0 --with-thread 

但我不不要以爲這會解決你的問題,但你可以試一試。

我的猜測是你以某種方式在項目設置中混合了/ MD和/ MT。
請參見以下鏈接:Firstsecond

1

什麼是可能發生的事情是,你的項目被鏈接到C++運行時的靜態調試版本,這將導致靜態調試升壓線程庫進行鏈接,也鏈接到另一個動態鏈接到C++運行庫的靜態庫。


sgd標籤在libboost_thread-vc80-mt-sgd-1_33_1.lib意味着你與建對C++運行時的靜態調試版本鏈接升壓線程庫。

相關問題