VS2008 編譯 boost::python boost::serialization 方法__python

來源:互聯網
上載者:User

一、準備工作:

1.下載 Boost

2.解壓 Boost

3.進入Boost 目錄,運行bootstrap.bat

二、boost::serialization 編譯:

1.開始菜單運行 : Visual Studio 2008 命令提示 ,進入Boost目錄,運行下面的命令:

b2  --toolset=msvc-9.0 --with-serialization --build-type=complete --prefix=c:\boost install

三、boost::python 編譯:

1.下載 Python 安裝版,省去編譯的麻煩(可選,若不安裝python,則python相關的庫將不會被編譯)

2.修改Boost目錄下\tools\build\v2\user-config.jam檔案

# ---------------------# Python configuration.# ---------------------# Configure specific Python version.using python : 3.3 : D:\\Python33 : D:\\Python33\\include : D:\\Python33\\libs;注: 3.3這裡填你安裝的python版本號碼

3.開始菜單運行 : Visual Studio 2008 命令提示 ,進入Boost目錄,運行下面的命令:

b2  --toolset=msvc-9.0 --with-python --build-type=complete --prefix=c:\boost install


四、備忘

編譯參數說明:

1.toolset:表示編譯器工具,我安裝的是VS2010,所以是msvc-10(如果你是VS2005,可以使用msvc-8.0 VS2008是msvc-9.0)

2.architecture:表示架構,也就是你的CPU架構,x86,x64,因為我安裝的是win7 32位,所以使用了x86的架構

3.instruction-set:表示指令集,依然是8086指令集

4.address-model:表示地址長度為32位

5.link:表示產生動態/靜態連結庫,動態連結程式庫是shared,靜態連結庫是static,一般都會編譯成靜態庫,因為給出程式的時候打包boost的庫會非常龐大

6.variant:表示產生的Debug或者release版本,一般情況下會兩種版本都會編譯出來的

7.threading:表示單/多線程編譯,一般我們的程式都會用到多線程,所以選擇了multi

8.runtime-link:表示動態/靜態連結C/C++執行階段程式庫(C/C++ Runtime),我們選擇了動態連結

9.without/with:表示不需要編譯/需要編譯哪些庫,一些自己不用的庫可以無需編譯

10.stage/install:stage表示只產生庫檔案(DLL和Lib),install還會產生包含標頭檔的include目錄,推薦使用stage,因為boost_1_49\boost中就是boost庫完整的標頭檔,所以無需再拷貝一份出來。編譯出來的庫會放在stage檔案夾中

這樣一份完整的boost庫就產生了,剩下就是直接使用到項目中了。

其實編譯的具體命令都是可以自己寫的。如果你需要編譯所有。只需要使用下面的這行代碼

b2 –toolset=msvc-10.0 –build-type=complete

就可以了


命名規則說明:

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 為例: lib 
首碼:除了Microsoft Windows之外,每一個Boost庫的名字都以此字串開始。在Windows上,只有普通的靜態庫使用lib首碼;匯入庫和DLL不使用。 boost_regex 
庫名稱:所有boost庫名檔案以boost_開頭。 -vc71 
Toolset 標記:標識了構建該庫所用的toolset和版本。 -mt 
Threading 標記:標識構建該庫啟用了多線程支援。不支援多線程的庫沒有-mt。 -d 
ABI標記:編碼了影響庫和其他編譯代碼互動的細節。對於每一種特性,向標記中添加一個字母: 

Key Use this library when:
s 靜態連結到C++標準庫和編譯器運行時支撐庫
g 使用標準庫和運行時支撐庫的調試版本
y 使用Python的特殊調試構建
d 構建代碼的調試版本
p 使用STLPort標準庫而不是編譯器提供的預設庫
n 使用STLPort已被棄用的“native iostreams”
-1_34 
版本戳記:完整的Boost發布號,底線代替點。例如,1.31.1版本將被標記為“-1_31_1”。 .lib 
副檔名:取決於作業系統。在大多數unix平台上,.a是靜態庫,.so是共用庫。在Windows上,.dll表示共用庫,.lib是靜態或匯入庫。

下表是對Regex庫編譯後的檔案名稱:

檔案名稱 含義 編譯使用該庫的程式時應使用的編譯選項
libboost_regex-vc90-mt-sgd-1_38.lib 靜態庫,多線程,調試版本 
使用靜態調試版本C執行階段程式庫(LIBCMTD.LIB和LIBCPMTD.LIB)
/MTd
libboost_regex-vc90-mt-s-1_38.lib 靜態庫,多線程 
使用靜態版本C執行階段程式庫(LIBCMT.LIB和LIBCPMT.LIB)
/MT
libboost_regex-vc90-mt-gd-1_38.lib 靜態庫,多線程,調試版本 
使用動態調試版本C執行階段程式庫(MSVCRTD.LIB和MSVCPRTD.LIB)
/MDd
libboost_regex-vc90-mt-1_38.lib 靜態庫,多線程 
使用動態版本C執行階段程式庫(MSVCRT.LIB和MSVCPRT.LIB)
/MD
boost_regex-vc90-mt-gd-1_38.lib 匯入庫(boost_regex-vc90-mt-gd-1_38.dll),多線程,調試版本  
boost_regex-vc90-mt-1_38.lib 匯入庫(boost_regex-vc90-mt-1_38.dll)多線程  


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.