首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用python3 -链接器错误为msvc构建boost python

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

Stack Overflow用户
提问于 2018-05-16 21:42:46
回答 1查看 877关注 0票数 1

我将Python Libary从Python2.7移植到新安装的带有VS2013和Anaconda Python3.664位的Win10上。

libariy包含一个dll,它使用boost python作为python的包装器,所以我必须重新编译它。由于之前的boost库是针对Python2.7进行编译的,因此我再次从一个新的boost_1_63_0开始,并在project-config.jam中使用以下设置对其进行了编译

代码语言:javascript
复制
import option ;    

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

option.set keep-going : false ;

使用这些参数

代码语言:javascript
复制
bjam.exe --with-python address-model=64 variant=release link=shared
--build-type=complete

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

代码语言:javascript
复制
└───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

由于我对链接器有一些问题,我在Visual Studio中开始了一个新的解决方案。所需的boost和Pyton文件夹已添加到项目C/C++-->general-->additional Include目录中,boost的stage\libs文件夹和python的libs文件夹也已添加到链接器的其他库目录中。

我尝试编译下面的最小示例,它在我的另一个系统上运行得很好,它仍然运行在旧的基于python2.7的boost版本上:

代码语言:javascript
复制
#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>

在编译时,我得到以下链接器错误

代码语言:javascript
复制
LNK1104: cannot open file 'libboost_numpy-vc120-mt-x64-1_67.lib'

因此,出于某种原因,构建过程创建了一个名为boost_numpy36-vc120-mt-x64-1_67.lib的库,但是链接器仍在搜索没有python版本36的版本。

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

代码语言:javascript
复制
LNK1104: cannot open file 'libboost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc120-mt-gd-x32-1_67.lib'

你知道这是怎么回事吗?

更新

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

代码语言:javascript
复制
#define BOOST_LIB_NAME "boost_numpy36"

但不幸的是,我仍然得到了第二个链接错误:

代码语言:javascript
复制
LNK1104: cannot open file 'libboost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc120-mt-gd-x32-1_67.lib'
EN

回答 1

Stack Overflow用户

发布于 2018-05-25 20:16:56

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50372568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档