Windows boost庫安裝 VS2010
記錄以下安裝的時候出現的坑吧。由於專案需要,目的是為了配置thrift框架,使用RPC服務。但是吧,在Windows上需要配置各種依賴庫,重新編譯。
1.版本問題。最初沒有意識到VS版本跟boost版本的問題,出了很多問題,但是最終問題好像也都不是版本的問題。不過最好還是要版本一致吧。
安裝boost使用的版本:boost_1_53_0
國內比較好下載的連結地址:boost1.53.0
問題:mspdb100.dll無法找到的情況。
方案:這個容易,因為沒有在VS環境下進行安裝,少了很多環境變數的設定。所以在Microsoft Visual Studio 10.0\VC\bin目錄下,執行vcvars32.bat就會配置相關的環境變數,再執行就不會出現這個問題了。
問題:出現了v100之類的問題,可能是因為版本2010是v100。所以需要安裝對版本,這個問題但是沒有記錄清楚。
方案:v100 for visual studio 2010, v110 for visual studio 2012
you also may be working on v100 from visual studio 2012
2、這個問題最頭疼,找了好久的答案,也嘗試過很多種。
問題:在編譯成功之後,會在stage\lib目錄下生成對應的lib檔案。將目錄都新增進VS2010的專案中,這是標頭檔案的問題都已經解決。但是在編譯的時候一直出現LINK : fatal error LNK1104: cannot open file ‘libboost_thread-vc100-mt-s-1_53.lib’的問題,屬於連結的問題吧。檢查一遍配置的目錄一點問題都沒有,重新安裝boost也是一樣的問題。
方案:
方案2 終於解決了問題。應該是編譯的庫的引數問題。
由於不熟悉,還是要慢慢學習。原因如下:
“多執行緒(/MT)”: release版本多執行緒靜態庫
需要使用 libboost_regex-vc90-mt-s-1_44.lib
“多執行緒除錯(/MTd)”:debug版本多執行緒靜態程庫
需要使用 libboost_regex-vc90-mt-sgd-1_44.lib
“多執行緒 DLL(/MD)”: release版本多執行緒動態庫
需要使用
靜態boost 庫連線
libboost_regex-vc90-mt -1_44.lib
動態boost 庫連線, 需要在引入庫前加上“lib”,
執行需要帶上對應的dll
boost_regex-vc90-mt-1_44.lib à在引入庫前加上“lib”
boost_regex-vc90-mt-1_44.dll
“多執行緒除錯 DLL(/MDd)”: debug版本多執行緒動態庫
需要使用
靜態boost 庫連線
libboost_regex-vc90-mt-gd-1_44.lib
動態boost 庫連線, 需要在引入庫前加上“lib”,
執行需要帶上對應的dll
boost_regex-vc90-mt-gd-1_44.lib à在引入庫前加上“lib”
boost_regex-vc90-mt-gd-1_44.dll
附帶安裝方式:
注:在VS命令列下執行
boost安裝編譯:
1、bootsrap.bat
2、bjam stage toolset=msvc-10.0 variant=debug link=static address-model=32 threading=multi runtime-link=static -s install
VS2010專案配置:找到對應的目錄位置。
“VC++目錄->庫目錄”,新增“C:\Boost\lib”,“包含目錄”添加了“C:\Boost\include\boost-1_53”
測試程式碼:
#include "stdafx.h"
#include "boost/thread.hpp"
#include "iostream"
using namespace std;
void threadFunc()
{
cout << "This is a thread function" << endl;
}
int main()
{
boost::function<void()> func(threadFunc);
boost::thread t(func);
t.join();
return 0;
}
本來編譯一次就需要好久時間,各種方案各種嘗試,花了很多時間,最終是在VS修改了引數,之後成功的。也算是一種學習吧。好久沒寫C++的東西了,積累經驗吧。lib還是要注意好版本問題。