无法运行 bjam 来编译 boost python 教程

Mic*_* IV 5 c++ python boost

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

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

最后:

比贾姆

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

更新:

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

蟒蛇你好.py

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

小智 4

这对我有用:

\n\n

1.) 解压 boost_1_55_0.zip

\n\n

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

\n\n

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

\n\n
Bootstrap\n
Run Code Online (Sandbox Code Playgroud)\n\n

3.) 找到 user-config.jam:

\n\n

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

\n\n
ECHO %HOMEDRIVE%%HOMEPATH%\n
Run Code Online (Sandbox Code Playgroud)\n\n

4.) 如果 user-config.jam 位于您的 homedrive 目录中,请按如下所示进行更改:

\n\n

注意力:

\n\n

.jam 语言将 \xe2\x80\x9cwhitespace\xe2\x80\x9d 评为参数分隔!

\n\n
# -------------------\n# MSVC configuration.\n# -------------------\n\n# Configure msvc (default version, searched for in standard locations and PATH).\n# using msvc ;\n\n# Configure specific msvc version (searched for in standard locations and PATH).\nusing msvc : 10.0 : C:\\\\app\\\\tools\\\\MSVisualStudio2010\\\\VC\\\\bin\\\\cl.exe ;\n\n\xe2\x80\xa6.\n\n# ---------------------\n# Python configuration.\n# ---------------------\n\n# Configure specific Python version.\n# using python : 3.1 : /usr/bin/python3 : /usr/include/python3.1 : /usr/lib ;\n\nusing python \n    : 2.5                   # Version\n    : C:\\\\app\\\\tools\\\\Python25\\\\python.exe      # Python Path\n    : C:\\\\app\\\\tools\\\\Python25\\\\include         # include path\n    : C:\\\\app\\\\tools\\\\Python25\\\\libs            # lib path(s)\n    : <define>BOOST_ALL_NO_LIB=1\n    ;\n
Run Code Online (Sandbox Code Playgroud)\n\n

5.) 配置后构建库!

\n\n

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

\n\n
.\\b2\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n
\\boost_1_55_0\\libs\\python\\example\\tutorial\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
hello.cpp\nhello.py\nuser-config.jam\nJamroot\nboost_python-vc100-mt-gd-1_55.lib\nbjam.exe\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

并输入以下命令:

\n\n
bjam\n
Run Code Online (Sandbox Code Playgroud)\n\n

10.) 成功构建后..

\n\n

您应该在目录中有此文件:

\n\n
hello_ext.dll\n
Run Code Online (Sandbox Code Playgroud)\n\n

将此文件重命名为:

\n\n
hello_ext.pyd\n
Run Code Online (Sandbox Code Playgroud)\n