下載boost庫(最好去官網下,一般有SGI(GCC+用的較多)和BOOST之分,VS下用BOOST)
http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=8041
或http://sourceforge.net/projects/boost/files/boost-docs/1.52.0/
下載boost_1_55_0(最新版本執行方法一樣,改下名字即可)壓縮文件,解壓縮到d:\boost_1_55_0\(可以任何位置,你覺得合適就可以)目錄下
1.編譯bjam
從開始->程序->Microsoft Visual Studio 2008->Visual Studio Tools->Visual Studio 2008 命令提示(一定要從這進),命令提示cd到d:\boost_1_55_0\下執行bootstrap.bat,會在d:\boost_1_55_0\產生bjam.exe。
2.編譯boost
命令提示cd到d:\boost_1_55_0\下執行
bjam --without-python --toolset=msvc-9.0 --prefix=d:\boost install
參數說明
--without-python 表示不使用 python
--toolset : 所使用compiler,Visual Studio 2008為msvc-9.0
--prefix:指定編譯後library的安裝目錄
這一步要花很長時間(大約20分鐘),看你的電腦速度
3.設定vs2008環境
啟動vs2008->工具->選項-> 項目和解決方案 -> VC++目錄(Tools->Options->Project and Solutions->VC++ Directories)
下拉 庫文件 加上d:\boost\lib
下拉 包含文件 加上d:\boost\include\boost-1_55
這樣基本已經完成了!
注意:如果發現libboost_regex-vc80-mt-gd-1_34_1.lib之類文件提示錯誤時,是找不到該文件!
就到D:\boost\lib把對應的文件libboost_regex-vc90-mt-gd-1_55.lib改為libboost_regex-vc80-mt-gd-1_55.lib(可以用記事本或者寫字板打開,然後保存)就可以一般是80和90的差別(2005是80,2008是90)
不知說的夠詳細不,希望不清楚的同學留言,我每天都登陸,可以幫忙解決問題。
可以使用 bjam --help查看幫助。下面是編譯共享和靜態的參數。
bjam stage --toolset=msvc-9.0 --stagedir=
"d:\boost\lib\"
link=shared runtime-link=shared threading=multi debug release
bjam stage --toolset=msvc-9.0 --stagedir=
"d:\boost\lib\"
link=
static
runtime-link=
static
threading=multi debug release
Boost程序庫完全開發指南——深入C++“准”標准庫高清PDF版 http://www.linuxidc.com/Linux/2013-07/87574.htm
Ubuntu下編譯安裝boost庫 http://www.linuxidc.com/Linux/2013-07/87573.htm
Ubuntu下編譯boost 1.52b http://www.linuxidc.com/Linux/2013-02/79004.htm
Ubuntu編譯安裝boost並在eclipse C/C++中使用 http://www.linuxidc.com/Linux/2011-04/34790.htm
Boost官網的《Geting Started On Windows》(http://www.boost.org/doc/libs/1_38_0/more/getting_started/windows.html)提到了Boost庫的命名,摘錄如下:
以 libboost_regex-vc71-mt-d-1_34.lib 為例:
下表是對Regex庫編譯後的文件名:
文件名 含義 編譯使用該庫的程序時應使用的編譯選項 libboost_regex-vc90-mt-sgd-1_38.lib 靜態庫,多線程,調試版本
需要注意的是,鏈接時,所使用的Regex庫文件名必須和編譯選項匹配,否則會造成如下鏈接錯誤:
LINK : warning LNK4098: defaultlib '×××××' conflicts with use of other libs; use /NODEFAULTLIB:library
原因是,當編譯時,cl.exe(也就是VC的編譯器)會根據上述編譯選項在編譯成的obj文件中植入相應的defaultlib文件名(使用DUMPBIN /DIRECTIVE ***,lib可以查看),如/MT對應的就是LIBCMT.LIB(C)和LIBCPMT.LIB(C++標准庫)。當鏈接器處理該obj文件時,會從文件中取出該defaultlib文件名,將其放在命令行庫列表的最後以供使用。對於靜態庫的處理也是如此,靜態庫也是由一些obj文件組成的,每個obj文件中也根據當時的編譯選項被植入了相應的defaultlib。當鏈接器處理靜態庫時,也會將涉及到的obj文件中的defaultlib放在命令行庫列表的最後。假設,我們的程序使用/MT編譯,那個對應的defaultlib就是LIBCMT.LIB(C)和LIBCPMT.LIB(C++標准庫)。而使用的是libboost_regex-vc90-mt-sgd-1_38.lib,它對應的defaultlib就是LIBCMTD.LIB和LIBCPMTD.LIB。鏈接過程中,鏈接器會發現采用了不同的運行時庫,所以會出現上述錯誤。
幸運的是,Visual C++支持自動鏈接,當包含Regex的頭文件時,Regex會根據當前工程的編譯選項(不同的編譯選項會定義不同的宏,具體參見上一篇C運行時庫)自動告訴編譯器將哪個文件送給鏈接器。
Boost.Regex默認使用的靜態鏈接方式,如果希望使用動態鏈接方式,如何實現呢? 定義宏BOOST_REGEX_DYN_LINK。要注意,一定要在包含regex頭文件之前定義該宏:
#define BOOST_REGEX_DYN_LINK關於此宏的解釋參見 http://www.boost.org/doc/libs/1_38_0/libs/regex/doc/html/boost_regex/configuration/linkage.html
Boost 的詳細介紹:請點這裡
Boost 的下載地址:請點這裡