vs2013编译boost1.67

已经编译好的boost文件

vs2013编译好的 boost基础版本和boost-python的MT的debug和releas版本,还附带了python37的头文件、lib和dll。下载地址

升级vs2013到update5版本

如果没有升级,会提示cl编译器内部错误。后续使用编译好的库也需要升级,不然无法正确链接。解决方案:

  1. msdn下载update5版本vs2013
  2. 使用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 

参数说明:

  1. install --prefix="D:\Boost" 使用安装模式,会在D:\Boost生成include和lib文件夹,注意D:\Boost要先存在,它不会帮你生成
  2. --with-python 只编译boost_python库其他不编译,去掉着编译基础版本boost
  3. link=shared runtime-link=shared 生成lib和dll
  4. threading=multi mt模式
  5. --debug --release 同时编译两个版本
  6. architecture=x86 address-model=64 编译64位版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值