boost 1.53 python致命错误LNK1104 boost_pythonvc110mtgd1_53.lib

2024-04-28 22:43:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试(用几天时间)来构建一个由Python使用的Boost/Python的C++代码生成的DLL。我是一名来自德国的学生,目前大部分都是用java编写的(我在C++之前写过一些基本的OpenGL和GIMP过滤的东西)。所以请原谅我的英语或C++初学者的错误。我的意思是,与C++相比,用java编程确实更舒服。但小冲突已经够了。在

错误:

LINK : fatal error LNK1104: File "boost_python-vc110-mt-gd-1_53.lib" could not be openend

我的预设:

-使用MS Visual Studio 2012(11.0)

-使用boost_1_53_0

-使用python2.7(我听说3.3可能会引起一些问题)

我所做的:

安装python并将其添加到PATH。然后在VS中创建一个新的空项目和一个类文件“测试.cpp“在boost教程页面上描述了以下内容:

^{pr2}$

接下来是我在VS项目属性中的新部分:

“配置属性”>;“常规”>;“配置类型”>;“动态库”(.dll)

C/C++ +Gt;广义加上包含目录>C:[... ]

链接器>;常规>;附加库目录>;C:[..]boost_1_53_0\stage\lib

从这个错误中,我假设我对Linker或Include做了错误的处理。我还更改了Linker>;General>;Additional Library目录以提升\u 1_53_0\libs,因为我不确定,但是发生了相同的错误。是的,我正确地包括了python。我也不确定是否必须将python旁边的其他内容放入Linker>;Input for boost。在

然后我用bjam构建boost,除了msvc-11.0之外没有其他选项,以确保拥有我需要的一切(尽管我读到boost/python不需要额外的构建),但仍然得到了相同的错误。有人能帮我吗?我很想一步一步地描述该怎么做。我真的很失望。在

顺便说一句:在Linker error LNK1104 with 'libboost_filesystem-vc100-mt-s-1_49.lib'前几天,我和这个家伙犯了同样的错误,然后停止了工作,当我重新开始时,我又犯了一个全新的错误(我不能告诉你这是怎么发生的)。在


Tags: 项目gt目录属性lib错误时间error
3条回答

因为它正在寻找静态库,所以请添加BOOST_PYTHON_STATIC_LIB标志,转到VS properties->;Preprocessor->;Processor definition,add BOOST_PYTHON_STATIC_LIB标志。在

请注意,我非常感谢您的尝试,但您的回答没有任何帮助。然后一个同学给了我一个正确答案的提示,有些步骤真的很简单,有些我不明白,但它现在起作用了。在

第一个问题是:新的boost 1.53.0不能用于Python27或更老版本。然后我将它与Python33连接起来,并删除了构建错误。在

但是当然,构建版本没有一个错误就不能正常工作。当我试着开始hellobost.py从VisualStudio生成的.pyd导入并调用greet方法时,出现以下错误:

ImportError: DLL load failed: The specified module could not be found.

我查了一下你好_外景pyd有了dependency walker和大量的拷贝粘贴,我发现它需要boost_python-vc110-mt-gd-1_53.dll(可能取决于您需要什么,并且以前是用bjam构建的)。那时候起作用了。也许有人可以解释为什么没有人解释说我需要这个dll和pyd在同一个文件夹中(或者我错过了什么?是不是因为我以前犯了错误?)在

不管怎样,我很高兴它现在起作用了,希望它能帮助其他人。在

你需要创建一个“用户-配置堵塞指示python头和lib的位置的文件推进。建造. 您可以使用以下内容在boost_1_53_0/目录中创建它:

# Configure specific Python version.
 using python : 2.7
 : C:/Python27/python.exe
 : C:/Python27/include #directory that contains pyconfig.h
 : C:/Python27/libs    #directory that contains python27.lib
 : <toolset>msvc ;

然后从boost_1_53_0/目录中调用b2,以构建丢失的库:

^{pr2}$

(尽管我建议b2 toolset=msvc-11.0 --with-python --user-config=user-config.jam --build-type=complete stage,这样您就可以一步到位地获得将来可能需要的所有配置)

一旦有了库,就需要将目录添加到visualstudio(boost和python)。在

成功构建模块后,需要将其重命名为Test.pyd(与BOOST_PYTHON_MODULE中使用的名称完全相同)。如果你有Python和Boost.Python在您的路径或当前目录中的库您将能够使用教程中的脚本:

import Test
print Test.greet()

得到熟悉的“你好世界”。在

相关问题 更多 >