boost库 python_如何在VS2017中使用Boost Python库进行构建

I have built the Boost 1.64.0 Python libraries, using MS Visual Studio Professional 2017 and 32-bit Python 3.4. Now, when I write an application against the resulting library, I'm getting the following link error:

LINK : fatal error LNK1104: cannot open file 'libboost_python-vc141-mt-1_64.lib'

I have looked in the stage/lib directory, and indeed, the library is named libboost_python3-vc141-mt-1_64.lib (note the 3 in the name). I'm assuming the 3 is referencing the fact that the Boost Python library was generated using Python 3. Why is there a naming inconsistency between the library that was built, and the library that my project is attempting to import? Is it simply a missing macro definition in my project configuration?

解决方案

In MSVC builds, the boost headers use MSVC #pragma comments to autolink to the boost libraries, see boost/config/auto_link.hpp.

In addition to including auto_link.hpp, the boost/python/detail/config.hpp file contains:

// Set the name of our library, this will get undef'ed by auto_link.hpp

// once it's done with it:

//

#define BOOST_LIB_NAME boost_python

Which is why MSVC is trying to autolink to libboost_python-vc141-mt-1_64.lib.

Clearly your boost build has built libboost_python3-vc141-mt-1_64.lib instead. As suggested by @kpie, your boost build may have named the python library file depending upon whether it's built for python 3 or python 2...

The answers to this question describes how to build boost for python 3. It may answer your macro question regarding the build.

To fix the issue, you could disable autolinking, or simply rename the library file to remove the "3".

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值