【问题标题】:Can't run bjam to compile boost python tutorial无法运行 bjam 编译 boost python 教程
【发布时间】:2013-12-04 06:59:56
【问题描述】:

我正在尝试关注this tutorial 为 Windows 的 python 包装 C++ 代码。我安装了 python。下载了最新版本的 boost(1_55)。首先我运行 bootstrap.bat 来构建 bjam.exe。接下来,我配置boost_1_55_0\tools\build\v2\user-config.jam 使用 msvc10 编译器并添加了 python 安装路径。 现在,根据教程:

现在我们准备好了...一定要 cd 到 libs/python/example/tutorial 教程“hello.cpp”和“Jamroot”所在的位置。

最后:

果酱

尝试在该目录中运行 bjam 给我:“bjam 未被识别为内部或外部命令”错误。我在这里错过了什么? user-config.jam 应该驻留在其他位置吗?还是将 bjam 添加到系统路径中?

更新:

好的。感谢@john,我不得不将 bjam 添加到系统路径。但是现在,运行它,hello_ext.lib 是在 \boost_1_55_0\libs\python\example\tutorial\bin\msvc-11.0\ 中创建的调试但不是DLL。根据教程我应该得到扩展的DLL文件。现在,我不确定python如何与扩展链接。但如果我假设它确实像C++那么它应该与hello_ext链接。 lib.But 如果运行:

python hello.py

其中包含从扩展中导入的方法,python运行时崩溃。没有关于这个工作流程的综合教程吗?Boost doc完全不了解这个。

【问题讨论】:

  • 可能 bjam 不在您的路径中。使用系统控制面板将包含 bjam 的目录添加到您的 PATH。
  • 不能真正帮助你 bjam 但我通常会设法避免在 unix 上使用 bjam 来编译 boost-python 项目。我只是确保在 makefile 中包含正确的头文件路径和动态库路径。我很确定可以为 Windows 和您的 IDE 做类似的事情。祝你好运
  • 不要使用 bjam。我建议改用 scons。

标签: c++ python boost


【解决方案1】:

这对我有用:

1.) 解压 boost_1_55_0.zip

2.) 准备使用 Boost 库二进制文件

转到 boost_1_55_0 根目录并打开命令提示符并键入以下命令:

Bootstrap

3.) 找到 user-config.jam:

在命令提示符下输入以下内容:

ECHO %HOMEDRIVE%%HOMEPATH%

4.) 如果 user-config.jam 在您的 homedrive 目录中,请按如下方式更改:

注意:

.jam 语言将“空格”视为参数的分隔符!

# -------------------
# MSVC configuration.
# -------------------

# Configure msvc (default version, searched for in standard locations and PATH).
# using msvc ;

# Configure specific msvc version (searched for in standard locations and PATH).
using msvc : 10.0 : C:\\app\\tools\\MSVisualStudio2010\\VC\\bin\\cl.exe ;

….

# ---------------------
# Python configuration.
# ---------------------

# Configure specific Python version.
# using python : 3.1 : /usr/bin/python3 : /usr/include/python3.1 : /usr/lib ;

using python 
    : 2.5                   # Version
    : C:\\app\\tools\\Python25\\python.exe      # Python Path
    : C:\\app\\tools\\Python25\\include         # include path
    : C:\\app\\tools\\Python25\\libs            # lib path(s)
    : <define>BOOST_ALL_NO_LIB=1
    ;

5.) 配置后构建库!!

转到 boost_1_55_0 根目录并打开命令提示符并键入以下命令:

.\b2

6.) 将 user-config.jam 复制到 \boost_1_55_0\libs\python\example\tutorial 7.) 进一步前往 \boost_1_55_0\stage\lib\

将 libboost_python-vc100-mt-gd-1_55.lib 重命名为 boost_python-vc100-mt-gd-1_55.lib 并复制到

\boost_1_55_0\libs\python\example\tutorial

8.) 现在您应该在 \boost_1_55_0\libs\python\example\tutorial 目录中拥有所有这些文件

hello.cpp
hello.py
user-config.jam
Jamroot
boost_python-vc100-mt-gd-1_55.lib
bjam.exe

9.) 在 \boost_1_55_0\libs\python\example\tutorial 中打开命令提示符

然后输入以下命令:

bjam

10.) 构建成功后..

你应该在目录中有这个文件:

hello_ext.dll

将此文件重命名为:

hello_ext.pyd

【讨论】:

  • 我确实想知道为什么这些信息不只是在教程中。
猜你喜欢
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多