1. 程式人生 > >Boost 1.59.0 編譯支援Python3的連結庫,生成vc120或vc140

Boost 1.59.0 編譯支援Python3的連結庫,生成vc120或vc140

Boost 1.59.0 編譯支援Python3的連結庫,生成vc120或vc140

官方編譯的Boost中只帶了Python2的連結庫,Python3的連結庫需要自己特別編譯,官方編譯版下載地址:http://sourceforge.net/projects/boost/files/boost-binaries

1. 將boost_1_59_0原始碼解壓到D:\Program Files\boost_1_59_0

2. 開啟CMD或Visual Studio 2013 command prompt,

  1)  cd D:\Program Files\boost_1_59_0

  2)  bootstrap     

3.按需要生成vc120或vc140  的win32或x64版本,注意生成的目錄,不要搞混

A.如果需要32位的連結庫,Python必須為32位; 

b2 toolset=msvc-12.0  --prefix=c:\boost\boost_vc_120\win32 --build-type=complete --with-python python=3.6 --abbreviate-paths address-model=32 install -j4 

b2 toolset=msvc-14.0  --prefix=c:\boost\boost_vc_140\win32 --build-type=complete --with-python python=3.6 --abbreviate-paths address-model=32 install -j4 

B.如果需要64位的連結庫,Python必須為64位; 

b2 toolset=msvc-12.0  --prefix=c:\boost\boost_vc_120\x64 --build-type=complete --with-python python=3.6 --abbreviate-paths address-model=64 install -j4  


b2 toolset=msvc-14.0  --prefix=c:\boost\boost_vc_140\x64 --build-type=complete --with-python python=3.6 --abbreviate-paths address-model=64 install -j4 

//b2 toolset=msvc-12.0 --build-type=complete --with-python --libdir=C:\Boost159 --abbreviate-paths architecture=x86 address-model=32 install -j4

4. 將C:\Boost\boost_vc_120\x64\lib中生成的python3連結庫複製到官方編譯版的lib資料夾中。

5. 新建C++工程,複製D:\Program Files\boost_1_59_0\libs\python\example\getting_started2.cpp到工程中,連結上boost_python3-vc120-mt-1_59.lib,編譯生成一個dll檔案。

6. 將dll檔案改成pobject.pyd檔案,與boost_python3-vc120-mt-1_59.dll一起拷貝到當前Python工程資料夾,在py檔案中直接"import pobject",就能呼叫C++的函數了。

 

=================

// 如果要獲取動態庫:

bjam install stage --toolset=msvc-14.0 --stagedir="c:\boost\boost_vc_140\boost_vc_140A" link=shared runtime-link=shared threading=multi debug release  (32位 address-model:如果沒有這個引數,是生成32位的平臺庫,address-model=64是生成x64的平臺庫)


bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=shared runtime-link=shared threading=multi debug release  
bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=shared runtime-link=shared threading=multi debug release  

 
 bjam install stage --toolset=msvc-12.0 --stagedir="D:\Program Files\boost_1_59_0\boost_vc_120" link=shared runtime-link=shared threading=multi debug release 
 

 

// 如果是要獲取靜態庫:

bjam install stage --toolset=msvc-14.0 --stagedir="c:\boost\boost_vc_140\boost_vc_140B" link=static runtime-link=static threading=multi debug release 

解釋完以上的命令後,再說完全編譯的後果。

1.toolset:表示編譯器工具,我安裝的是VS2013,所以是msvc-12.0; 
                    具體的版本對應關係,可以檢視boost_1_59_0\tools\build\src\tools\msvc.jam中的# Version aliases節
                    # Version aliases.
                    .version-alias-6 = 6.0 ;
                    .version-alias-6.5 = 6.0 ;
                    .version-alias-7 = 7.0 ;
                    .version-alias-8 = 8.0 ;
                    .version-alias-9 = 9.0 ;
                    .version-alias-10 = 10.0 ;
                    .version-alias-11 = 11.0 ;
                    .version-alias-12 = 12.0 ;
                    .version-alias-14 = 14.0 ;

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

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

4.address-model:如果沒有這個引數,是生成32位的平臺庫,=x64是生成x64的平臺庫

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_62_0\boost中就是boost庫完整的標頭檔案,所以無需再拷貝一份出來。編譯出來的庫會放在stage資料夾中

這樣一份完整的boost庫就生成了,剩下就是直接使用到專案中了。

x86包含目錄:C:\boost\x86\include\boost-1_59
 x86庫目錄:C:\boost\x86\lib
 x64包含目錄:C:\boost\x64\include\boost-1_59
 x64庫目錄:C:\boost\x64\lib