C++和Python的混合编程-Boost::python的编译和配置

Python017

C++和Python的混合编程-Boost::python的编译和配置,第1张

视频教程: boost::python库的编译和使用的基本方法

导出的模块名需要和生成的pyd文件名相同

(1)从Boost官方网站下载Boost库源文件,将其解压至某一目录中。

(2)将Boost解压至的目录添加到VC++ 6.0的【Include files】中,

(3)进入Boost目录下的“libs\python\build\VisualStudio”子目录中,在VC++ 6.0中打开其中的“boost_python.dsw”文件。

(4)单击【Build】|【Batch Build】命令,分别编译Boost.Python的Debug和Release版。

(5)编译完成后将在Boost目录下的“libs\python\build\bin-stage”子目录中生成动态链接库和库文件。由于使

用Boost.Python编写的Python扩展在运行时根据版本不同需要“boost_python.dll”和

“boost_python_debug.dll”文件。为了方便,可以将其放到Windows安装目录下的“system32”目录下。否则,需要将其

和Python扩展放在同一目录中。

(6)将Boost目录下的“libs\python\build\bin-stage”子目录添加到VC++ 6.0的【Library files】中,

完成上述设置后就可以使用Boost.Python编写Python扩展了。

使用Boost.Python扩展和嵌入Python

通过Boost.Python可以在Python内使用C++类和函数。和SWIG一样Boost.Python简化了编写Python扩展的代码,而不用使用Python/C API。但与SWIG不同,Boost.Python是一个类库,无需再使用接口文件。

初始化和方法列表

在Boost.Python中可以通过使用BOOST_PYTHON_MODULE来命名模块名。在BOOST_PYTHON_MODULE中则可以使用def来实现使用Python/C API定义的方法列表。以下是一个简单的例子。

void show()

声明show函数

{

cout <<"Boost.Python"

}

BOOST_PYTHON_MODULE(example)

使用BOOST_PYTHON_MODULE命名模块名为“example”

{

def("show",show)

相当于定义方法列表

以上就是对如何编译Boost.Python以及如何使用Boost.Python扩展和嵌入Python的相关的内容的介绍,望你会有所收获。

刚刚在 macOS 遇到了类似问题并有了一个解决方案:解决 macOS 下 Python 安装 Dlib 的问题:Cmake 找不到 boost-python

Linux 以及 其他 类 Unix 系统可能都可以参考上面在 macOS High Sierra 下的思路来通过设定 ~/.bashprofile 里面的 CMAKE_PREFIX_PATH 指向 boost 安装路径来解决这个问题。

现在我正在Windows虚拟机里面测试,发现似乎也是 cmake 没有设定 boost 位置导致的。

我尝试一下用类似方法来解决,然后把细节过程截图发上来。

到Python Extension Packages for Windows

下载对应系统版本的 boost python 的 whl:

点击此链接去下载 CMake 安装包

点击此链接去下载 Boost C++ 二进制安装包

下载之后双击运行安装到默认位置;

1 然后到安装目录,找到bootstrap.bat,双击运行;

2 接下来在终端(CMD 或者 Powershell)里面运行:

b2 install --prefix=PREFIX

3 这里的 PREFIX 是一个目录位置,用来安装 Boost.Build;

4 如果安装完成如果没有报错,接下来还在 boost 所在目录 运行

b2 -a --with-python address-model=64 toolset=msvc runtime-link=static

5 如果上一步还是没有报错,接下来吧设置环境变量:

BOOST_ROOT=C:\local\boost_1_65_1

BOOST_LIBRARYDIR=C:\local\boost_1_65_1\stage\lib

上面这些内容部分参考了 BOOST 官方文档的内容:Getting Started on Windows

上述步骤完成之后,使用 pip install dlib 来安装吧.

我自己在 Windows 7 32bit 系统下测到一半提示编译错误,不过能确定的是上面这些步骤都没问题了,算了,我懒得折腾了,以上内容供参考了。

希望大家都安装顺利,另外开发机还是 类 Unix 系统好配置啊。