0

我正在尝试使用来自 1_53 和 python 35 的 boost.python 1_67_0 在 VS2015 中编译一个旧的 VS2010 项目。

让它编译起来并不难,只需进行一些调整即可包含路径并将一些 python 2 字符串处理更新为 python 3。

但是我被困在链接上,因为链接器在以下位置失败:

LINK : fatal error LNK1104: cannot open file 'boost_python-vc100-mt-gd-1_67.lib'

这真的没有意义,因为库版本应该是 vc140。在库路径中确实存在 libboost_python35-vc140-mt-gd-x32-1_67.lib 和其他一些 libboost_python35-vc140* 选项。

它从哪里获得名称“boost_python-vc100-mt-gd-1_67.lib”?(即这是我在配置中遗漏的东西吗?)

4

1 回答 1

0

在 Visual Studio Boost 下,使用 boost/configure/auto_link.hpp 生成库名称并将它们添加到链接器的依赖项中。这段代码的参数之一是 BOOST_LIB_NAME,对于 boost::python,它在 boost/python/detail/config.hpp 中定义。在版本 1_67_0 中,当前为:

#define BOOST_LIB_NAME boost_python##PY_MAJOR_VERSION##PY_MINOR_VERSION

其中 python patchlevel.h 有 PY_MAJOR_VERSION 和 PY_MINOR_VERSION 的定义。

这意味着库名称本身不需要显式添加到您的 Visual Studio 项目中。只是 boost 库目录的路径。

对我来说,我需要从以下位置删除任何(提升)库名称:

  • 配置属性 > 链接器 > 输入 > 附加依赖项
  • 配置属性 > 链接器 > 所有选项 > 附加依赖项

并且需要确保我使用共享(dll)库构建了 boost::python,因为我将构建一个 DLL。静态库是 libboost*.lib,共享库是 boost*.lib。要强制生成我使用的共享库:

C:\dev\boost\boost_1_67_0> b2.exe link=shared,static --with-python -a

于 2018-05-07T17:42:56.357 回答