1. 程式人生 > >生成VS2010的BOOST庫

生成VS2010的BOOST庫

生成VS2010BOOST

系統:Windows 8.1

IDEVisual studio 2010

BOOST:1.65.1

1. 進入編譯環境

點選Visual Studio Command Prompt(2010)進入對應的控制檯文字環境,這個環境已經載入了編譯所需的環境變數;在環境變數正確的情況下,也可以使用CMD控制檯。

進入..(BOOST原始碼庫存放位置)\boost_1_65_1\

2. 開始生成編譯工具

執行bootstrap.bat//windows 系統下需要執行這個批處理檔案

在這個階段出錯,開啟bootstrap.log檔案檢視錯誤資訊,

發現strings.c中出現報錯,

syntax error: missing ‘;’ before ‘type’....

出現類似錯誤的原因是型別未定義,這個原因是.c檔案中,所有變數的宣告必須在第一行可執行語句之前進行,strings.c檔案中的變數宣告位置進行更改即可。

重新執行bootstrap.bat。遇到上面的問題以同樣的方式進行處理。

在這步中遇到的第二個問題是:LNK2001: unresolved external symbol _va_copy...

出項這個問題的原因是,把linux下的程式一直到VC上時,C版本不支援va_copy,因為va_copyC99中的。

根據bootstrap.log的顯示,錯誤發生在連線

debugger.obj的時候,所以在debugger.c中可以看到va_copy這個函式的掉用,在這個.c檔案頭部增加如下定義:

#ifndef va_copy

#ifdef __va_copy

#define va_copy(DEST,SRC) __va_copy((DEST),(SRC))

#else

#define va_copy(DEST,SRC) memcpy((&DEST),(&SRC),sizeof(va_list))

#endif

#endif

編譯成功後,會提示 Bootstrapping is done. To build, run: .\b2,實際上可以使用

.\bjam

3. 新增第三方庫

有些庫比如zlib是沒有預設包含到boost庫中的,需要先下載原始碼,然後編譯到boost庫中。

zlibbzip2為例,下載原始碼包,解壓到本機,例如:

Zlib: c:\zlib-1.2.11

Bzip2: c:\bzip2-1.0.6

輸入命令設定環境變數:

set BZIP2_SOURCE=”c:\bzip2-1.0.6”

set ZLIB_SOURCE=”c:\zlib-1.2.11”

4. 開始編譯

在設定環境變數之後,輸入.\bjam 開始預設編譯。

編譯結束之後,會顯示include路徑和library路徑。

例如:

Include paths: c:\boost_1_65_1

Library paths: c:\boost_1_65_1\stage\lib