在Visual Studio .NET 2003 命令提示下進入boost目錄,如何進入tools\build\jam_src\,執行build.bat,編譯成功得到bjam.exe
接著copy bjam.exe到 boost目錄,執行bjam -sBOOST_ROOT=. -sTOOLS=vc7 "-sBUILD=debug release <runtime-link>static/dynamic"
在主頁點擊download進入sourceforge頁面下載,當前最新版本為boost_1_33_1,有多種文件格式可供下載(包括.exe, .tar.gz等),內容相同,都是boost_1_33_1的全部源代碼。下載后解壓(假設解壓目錄為D:\boost\boost_1_33_1)。
boost中的大部分內容都可以直接源代碼使用,而thread則需要首先編譯出對應的庫。
Windows XP平臺:
我的機器上安裝了vc2003和vc2005,分別在D:\devenv\vs2003和D:\devenv\vs2005目錄下
1. 編譯jam(JAM是編譯其他庫的基礎)
啟動命令行進入D:\boost\boost_1_33_1\tools\build\jam_src目錄
運行build即可
運行結束后,將新出現bin.ntx86目錄,我們所需要的bjam.exe就在該目錄下。
查看一下build文件的內容,發現其自動檢測vc2003(vc7.1)的安裝目錄,然后調用vc7.1編譯出的bjam.exe。(使用了VS71COMNTOOLS宏)
2. 編譯thread庫
啟動命令行進入D:\boost\boost_1_33_1目錄
set VC71_ROOT=D:\devenv\vs2003\Vc7 (此時沒有自動檢測,所以需要人工指定)
tools\build\jam_src\bin.ntx86\bjam.exe --with-thread stage (只編譯thread庫)
編譯完成后,結果在D:\boost\boost_1_33_1\bin\boost\libs\thread\build目錄下(包括debug/relase, dll/lib等);另外,由于我們在編譯時使用了stage選項,所以所有的結果都將被拷貝到D:\boost\boost_1_33_1\stage\lib目錄下。
總結一下,
動態庫
libboost_thread-vc71-mt-gd-1_33_1.lib + boost_thread-vc71-mt-gd-1_33_1.dll (debug) 42.4k + 88.0k
libboost_thread-vc71-mt-1_33_1.lib + boost_thread-vc71-mt-1_33_1.dll (release) 42.0k + 44.0k
靜態庫
libboost_thread-vc71-mt-gd-1_33_1.lib (debug) 2.61M
libboost_thread-vc71-mt-1_33_1.lib (release) 782k
靜態庫(runtime-link-static)
libboost_thread-vc71-mt-sgd-1_33_1.lib (debug) 2.19M
libboost_thread-vc71-mt-s-1_33_1.lib (release) 692k
s Static link to runtime.
g Debug runtime.
d Debug enabled code.
3. 準備使用thread庫
選用編譯得到的thread動態庫。
將boost_thread-vc71-mt-gd-1_33_1.lib重命名為libboost_thread-vc71-mt-gd-1_33_1.lib(前面加了lib)
將boost_thread-vc71-mt-1_33_1.lib重命名為libboost_thread-vc71-mt-1_33_1.lib(前面加了lib)
將這兩個文件拷貝到D:\devenv\vs2003\Vc7\PlatformSDK\Lib
將boost_thread-vc71-mt-gd-1_33_1.dll拷貝到windows的system32目錄下
將boost_thread-vc71-mt-1_33_1.dll拷貝到windows的system32目錄下
以上將thread的debug/release版本的共享庫拷貝到系統目錄下,接下去就可以使用了。
4. 使用thread庫
在vc2003中創建一個空的Win32 Console Project,代碼:
#include <boost/thread/thread.hpp>
#include <iostream>
void hello()
{
std::cout << "Hello world, I'm a thread!" << std::endl;
}
main()
{
boost::thread thrd(&hello);
thrd.join();
}
設置Project屬性的Code Geneartion------Runtime Library 為 /MDd 或者 /MD
設置Project屬性的General-------Additional Include Directories為 D:\boost\boost_1_33_1
編譯運行即可。
posted on 2008-10-27 16:53
小王 閱讀(624)
評論(0) 編輯 收藏 引用 所屬分類:
Boost