已经编译好的boost文件
vs2013编译好的 boost基础版本和boost-python的MT的debug和releas版本,还附带了python37的头文件、lib和dll。下载地址
升级vs2013到update5版本
如果没有升级,会提示cl编译器内部错误。后续使用编译好的库也需要升级,不然无法正确链接。解决方案:
- msdn下载update5版本vs2013
- 使用update5更新包,我在官网没有找到,这里有个下载地址
生成boost所需要的编译工具b2
先去boost官网下载源码,解压后进入文件夹boost_1_67_0/
运行bootstrap.bat
D:\boost_1_67_0>bootstrap.bat
Building Boost.Build engine
Generating Boost.Build configuration in project-config.jam for msvc...
Bootstrapping is done. To build, run:
.\b2
To adjust configuration, edit 'project-config.jam'.
Further information:
- Command line help:
.\b2 --help
- Getting started guide:
http://boost.org/more/getting_started/windows.html
- Boost.Build documentation:
http://www.boost.org/build/
修改project-config.jam
文件指定编译器msvc12即vs2013
指定python版本是python37和及其路径
import option ;
using msvc : 12.0 ;
using python : 3.7 : D:/ProgramData/Anaconda3 ;
option.set keep-going : false ;
修改源码以修复1.67的一个bug
如果没有没有修改,在链接是会提示找不到boost_python##PY_MAJOR_VERSION##PY_MINOR_VERSION_vc120-mt-gd-x64-1_67.lib
但是在我们目录下面是有个文件是
boost_python37_vc120-mt-gd-x64-1_67.lib
这需要修改boost/python/detail/config.hpp
的内容
//in detail/config.hpp
#define BOOST_LIB_NAME boost_python##PY_MAJOR_VERSION##PY_MINOR_VERSION
//》》》》》》》》》改为》》》》》》
#define _BPYCONCAT(A, B) A ## B
#define BPYCONCAT(A, B) _BPYCONCAT(A, B)
#define BOOST_LIB_NAME BPYCONCAT(boost_python, BPYCONCAT(PY_MAJOR_VERSION, PY_MINOR_VERSION))
编译boost_python
b2 install --with-python --prefix="D:\Boost" link=shared runtime-link=shared threading=multi --debug --release architecture=x86 address-model=64
参数说明:
install --prefix="D:\Boost"
使用安装模式,会在D:\Boost
生成include和lib文件夹,注意D:\Boost
要先存在,它不会帮你生成--with-python
只编译boost_python库其他不编译,去掉着编译基础版本boostlink=shared runtime-link=shared
生成lib和dllthreading=multi
mt模式--debug --release
同时编译两个版本architecture=x86 address-model=64
编译64位版本