寻找 VS 2010 库的 Visual Studio 2015 链接器

VisualStudio 2015 linker looking for VS 2010 library

我正在尝试使用 boost.python 1_67_0 从 1_53 和 python 35.

在 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' 这个名字是从哪里来的? (也就是说,这是我在配置中遗漏的东西吗?)

在 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