2012-06-07 132 views
3

我正在處理VS 2010中的一個DLL項目,我想在我的代碼的某個部分使用boost mutex。但是當我編譯項目發佈最終的DLL,我得到這個鏈接錯誤:如何編譯使用boost庫的DLL?

LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc100-mt-1_49.lib' 

我已經使用這個命令編譯升壓:

bjam install --toolset=msvc variant=release link=static threading=multi runtime-link=static 

&我一個文件名爲libboost_date_time-vc100-mt-s-1_49.lib,當我將項目的配置類型從動態鏈接庫(DLL)更改爲靜態庫,項目成功建立,但我只需要作爲DLL文件發佈(我的最終DLL不能對其他外部DLL有任何依賴關係)。我知道問題是由彙編編譯引起的,但我不知道該如何重新編譯它
任何指導原則?

回答

1

IMO,你建立的boost庫很好:你用link=static這意味着你想發出靜態庫(而不是DLL),並且因爲你想獨立部署,所以你指定了runtime-link=static這意味着你鏈接到MS C/C++運行時間爲static庫(例如printf()的代碼將嵌入到最終庫中,不會引用msvcr100.dll)

請看下面的圖片,確保設置提升庫所在目錄的完整路徑附加庫依賴關係

enter image description here

3

檢查您是否靜態鏈接運行時庫(配置屬性 - > C/C++ - >代碼生成 - >運行時庫:多線程(/ MT))。

否則,請動態鏈接CRT並進行提升。爲此建立這樣的提升:

bjam --toolset=msvc variant=release link=shared threading=multi runtime-link=shared