我正在使用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
答案 0 :(得分:0)
我无法解决所谓的错误,但我在这里找到了一组预编译的库: https://www.lfd.uci.edu/~gohlke/pythonlibs/
答案 1 :(得分:0)