8

我想編譯我的程序,但它根本不會鏈接。我已經指定了boost lib文件的路徑,鏈接器仍然抱怨。這裏的鏈接錯誤我:試圖鏈接升壓1.52線程

1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" ([email protected]@[email protected]@[email protected]@XZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" ([email protected]@[email protected]@[email protected]@XZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall boost::detail::thread_data_base::~thread_data_base(void)" ([email protected]@[email protected]@[email protected]) 
1>Edproj.obj : error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" ([email protected]@@[email protected]@@@Z) 
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::detach(void)" ([email protected]@[email protected]@QAEXXZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::join(void)" ([email protected]@[email protected]@QAEXXZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "private: void __thiscall boost::thread::start_thread(void)" ([email protected]@[email protected]@AAEXXZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "bool __cdecl boost::this_thread::interruptible_wait(void *,struct boost::detail::timeout)" ([email protected][email protected]@@[email protected]@[email protected]@Z) 

BOOST_LIB_DIAGNOSTIC返回

1> Linking to lib file: libboost_thread-vc100-mt-s-1_52.lib 
1> Linking to lib file: libboost_date_time-vc100-mt-s-1_52.lib 
1> Linking to lib file: libboost_system-vc100-mt-s-1_52.lib 
1> Linking to lib file: libboost_chrono-vc100-mt-s-1_52.lib 

更多信息:

我運行64位Windows 8 Pro和我編譯提升使用下列選項

bjam --build-type=complete --toolset=msvc10.0 address-model=64 architecture=x86 variant=debug,release threading=multi link=static runtime-link=static 

有人能告訴我什麼是錯的嗎?

更新:

改變,以提高1.51它擺脫了7出的那些連接錯誤的8後,但是這一個是依然執着

error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" ([email protected]@@[email protected]@@@Z) 

我不明白這到底是怎麼回事。這是來自boostpro 32位安裝程序。它不能與我的源文件有關嗎?

更新:

好吧我已經解決了這個問題,以提升1.51。在屬性頁發現>> C/C++ >>代碼生成>>啓用C++異常關閉了我。

好的。我將嘗試查看相同的設置是否解決了升壓問題1.52。稍後更新。

+0

幫不了你了,但我一直在使用從boost-PRO prebuilts了它是一個預建升壓包與安裝 –

+0

是的,我正在試圖通過助推器專業版來獲得1_51的構建,看看我能否實現它。 –

+2

啓用例外的好處。它在我的情況下工作。 –

回答

0

一定要將正確的目錄添加到鏈接器屬性中。

閱讀此篇進一步細節 Boost linker error: Unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::get_system_category(void)"

而且你一定要將此路徑添加到鏈接器除了目錄:

$(BOOST_ROOT)\ bin.v2 \庫\螺紋\編譯\ MSVC -xx.0 \發佈\地址模型-64 \鏈接靜態\線程,多

其中xx是你的Visual Studio版本

+0

嗨,我在發佈我的問題之前偶然發現了這篇文章。已經完成了那裏陳述的東西,但仍然沒有運氣。 –

+0

你可以在這裏發佈你的鏈接器添加目錄嗎? –

+0

$(BOOST)stage \ lib \; $(LibraryPath) BOOST是C:\ Dev \ boost_1_52_0 \ –

0

感謝在我看來就像它沒有自動連接正確。下面

Include path is boost152/ only 
Library path is boost152/stage/lib 
+0

嗯...我去做了一次計數器檢查。 我已經把我的環境變量,例如: '$(BOOST)=%DEV%\ boost_1_52_0 \' 其中 '%DEV%爲C:\開發\' 並在VC++目錄下的財產我有以下幾種: 'Include:$(BOOST)' 'Library:$(BOOST)stage \ lib \' –

0

這兩個定義,用我的鏈接搞亂了,扔一個美麗的「LNK2001:無法解析的外部符號」錯誤。你有沒有在你的代碼中的某個地方?

//#define BOOST_FILESYSTEM_NO_DEPRECATED 
//#define BOOST_FILESYSTEM_NO_LIB 
1

我有同樣的問題之前,我建立與運行直接bootstrap.bat默認參數提升庫。

如果您在項目中使用boost :: system,則應該使用並指定x86或x64版本的boost :: system lib。

你可以使用這個蝙蝠重新編譯boost lib,保存這些文件以提升根文件夾並在CMD窗口中運行它(不要雙擊!):

call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86 

cd boost_1_60_0 
call bootstrap.bat 

rem Most libraries can be static libs 
b2 -j8 toolset=msvc-14.0 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64 
b2 -j8 toolset=msvc-14.0 address-model=32 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/win32 

pause 

有關詳細信息,你可以看到這篇文章: https://studiofreya.com/2015/12/19/how-to-build-boost-1-60-with-visual-studio-2015/