使用python3为msvc构建boost python - 链接器错误

时间:2018-05-16 13:42:46

标签: python c++ python-3.x boost

我正在使用VS2013和Anaconda Python 3.6 64bit在新安装的Win10上将Python Libary从python 2.7移植到3.6。

libariy包含一个dll,它使用boost python作为python的包装器,所以我必须重新编译它。 由于之前的升级库是针对python 2.7编译的,我再次从一个新的boost_1_63_0开始,并使用:focus

中的以下设置对其进行编译
const router = require('express').Router()
router.get('/', (req, res) => {

})
module.exports = router

使用这些参数

project-config.jam

我得到了一整套已编译的库:

import option ;    

using msvc = 12.0;  
using python : 3.6 : C:\\ProgramData\\Anaconda3 ;   

option.set keep-going : false ;

由于我遇到了链接器的一些问题,我在Visual Studio中开始了一个新的Soulution。所需的boost和Pyton文件夹已添加到项目C / C ++ - > general - >其他Include目录以及boost的bjam.exe --with-python address-model=64 variant=release link=shared --build-type=complete 文件夹和python的└───lib boost_numpy36-vc120-mt-x64-1_67.dll boost_numpy36-vc120-mt-x64-1_67.lib boost_python36-vc120-mt-x64-1_67.dll boost_python36-vc120-mt-x64-1_67.lib ... libboost_python36-vc120-mt-gd-x32-1_67.lib libboost_python36-vc120-mt-gd-x64-1_67.lib libboost_python36-vc120-mt-x32-1_67.lib libboost_python36-vc120-mt-x64-1_67.lib ... libboost_numpy36-vc120-mt-gd-x32-1_67.lib libboost_numpy36-vc120-mt-gd-x64-1_67.lib libboost_numpy36-vc120-mt-x32-1_67.lib libboost_numpy36-vc120-mt-x64-1_67.lib 文件夹已添加到其他库中链接器的目录。

我尝试编译下面的最小示例,该示例在我的其他系统上完美运行,该系统仍在基于旧的基于python 2.7的boost版本上运行:

stage\libs

编译时我收到以下链接器错误

libs

因此,由于某种原因,构建会创建一个名为#include "stdafx.h" #define BOOST_PYTHON_STATIC_LIB #define BOOST_LIB_NAME "boost_numpy" #include <boost/config/auto_link.hpp> #include <boost/python/numpy.hpp> #include <boost/python.hpp> #include <boost/python/numpy.hpp> #include <boost/python/suite/indexing/vector_indexing_suite.hpp> 的lib,但链接器仍在搜索没有python版本LNK1104: cannot open file 'libboost_numpy-vc120-mt-x64-1_67.lib' 的版本。

当我从lib中删除python版本时,我得到以下链接器错误:

boost_numpy36-vc120-mt-x64-1_67.lib

这里有什么想法吗?

[更新]

好的,所以在找到this问题之后,我意识到该名称与36的定义相关联,因此我将其更改为

LNK1104: cannot open file 'libboost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc120-mt-gd-x32-1_67.lib'

但是unfortunatell我仍然得到第二个链接错误:

BOOST_LIB_NAME

2 个答案:

答案 0 :(得分:0)

我无法解决所谓的错误,但我在这里找到了一组预编译的库: https://www.lfd.uci.edu/~gohlke/pythonlibs/

答案 1 :(得分:0)

您提到的问题:

  

LNK1104:无法打开文件   'libboost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc120-mt-gd-x32-1_67.lib'

this提交时已解决。

要获取问题的完整信息,您可以检查this