我继承了一个使用bjam和boost-python构建一些用C ++编写的Python模块的项目。 Jamroot先前包含:
constant PYTHON_ROOT : C:/Python26 ;
using python : 2.6 : $(PYTHON_ROOT) ;
use-project boost : C:/boost_1_40_0 ;
我安装了Python 2.7,所以我将其更改为:
using python : 2.7 : C:/Python27 ;
然后我运行bjam --toolset=msvc --with-python
,失败了(在一段非常缓慢的“......耐心......”消息集之后),因为找不到pyconfig.h
或任何Boost lib文件。我改成了:
using python : 2.7 : C:/Python27/python.exe : C:/Python27/include : C:/Python27/lib ;
要明确路径,这似乎解决了pyconfig.h
问题,尽管我遇到了上述行的2.6版本的问题,即使我指定--python=2.7
。
现在我收到了一堆像LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc90-mt-1_40.lib'
这样的Boost链接器错误,即使它们存在于C:/boost_1_40_0/stage/lib/
中。
任何想法我缺少什么配置标志?
答案 0 :(得分:1)
根据您的Jamroot文件中的内容,您可能需要在开头添加几行:
use-project boost : <Full path to your boost root directory> ;
这应该告诉你的项目使用目录中的boost。
此外,在项目行中,一旦有了use-project boost命令,就可以在项目定义的需求部分添加boost python的库需求:
<library>/boost/python//boost_python
将这两行添加到我的Jamroot文件中,我不再有链接问题了。
如果你可以发布你的Jamroot文件,我们可以看看是否有更具体的需要。
答案 1 :(得分:1)
我认为这是“C:/ boost_1_40_0”中的“Boost.Python”是用Python2.6构建的 但是你想使用Python2.6的“Boost.Python”来实现Python2.7的二进制文件和库。这是一个常见的错误。您应该使用Python2.7重建Boost源包!