2

我正在继承一个使用 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.

现在我得到一堆 Boost 链接器错误,例如LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc90-mt-1_40.lib',即使它们存在于C:/boost_1_40_0/stage/lib/.

任何想法我缺少什么配置标志?

4

2 回答 2

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 文件,我们可以查看是否需要更具体的内容。

于 2013-02-21T17:50:38.757 回答
1

我认为这是 "C:/boost_1_40_0" 中的 "Boost.Python" 是用 Python2.6 构建的,但是你想将 Python2.6 的 "Boost.Python" 用于现在的 Python2.7 二进制文件和库。这是一个常见的错误。你应该用 Python2.7 重建 Boost 源包!

于 2013-02-24T23:42:31.697 回答