C++ VisualStudio 2015链接器寻找VS 2010库

C++ VisualStudio 2015链接器寻找VS 2010库,c++,boost-python,programmers-notepad,C++,Boost Python,Programmers Notepad,我正试图在VS2015中用boost.python 1_67_0从1_53和python 35编译一个旧的VS2010项目 编译它并不太难,只是做了一些调整,包括path和将两个Python2字符串处理更新为Python3 但我被困在链接上,因为链接器在以下方面失败: 链接:致命错误LNK1104:无法打开文件“boost\u python-vc100-mt-gd-1\u 67.lib” 这真的没有意义,因为库版本应该是vc140。在库路径中确实存在libboost_python35-vc140

我正试图在VS2015中用boost.python 1_67_0从1_53和python 35编译一个旧的VS2010项目

编译它并不太难,只是做了一些调整,包括path和将两个Python2字符串处理更新为Python3

但我被困在链接上,因为链接器在以下方面失败:

链接:致命错误LNK1104:无法打开文件“boost\u python-vc100-mt-gd-1\u 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\u 67\u 0中,目前:

#定义BOOST_LIB_NAME BOOST_python##PY#PY#PY#PY#PY#MINOR_版本

其中python patchlevel.h有PY_MAJOR_版本和PY_MINOR_版本的定义

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

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

  • 配置属性>链接器>输入>其他依赖项
  • 配置属性>链接器>所有选项>其他依赖项
并且需要确保我使用共享(dll)库构建了boost::python,因为我将构建一个dll。静态库为libboost*.lib,共享库为boost*.lib。要强制生成我使用的共享库,请执行以下操作:


C:\dev\boost\boost\u 1\u 67\u 0>b2.exe link=shared,static——使用python-a

boost可以在构建库时确定需要链接哪些库。所以这里的基本诊断是您没有重建boost。谁知道,没有人喜欢嚼锡纸。考虑到“工作到”。通过“物业经理”查看项目属性>链接器>所有选项并找到库。但是现在我有了
LINK:fatal error LNK1104:无法打开文件'boost\u pythonPY\u MAJOR\u VERSIONPY\u MINOR\u VERSION-vc140-mt-gd-x32-1\u 67.lib'
,我打赌这是因为PY\u MAJOR\u版本和PY\u MINOR\u版本没有在某处定义……我只有boost 1\u 67,它刚刚下载和构建,所有的库都在那里。它不是boost,只是一些插入到配置中的项目属性。