如何通过Boost.Python在Python中使用C++类和函数

Python018

如何通过Boost.Python在Python中使用C++类和函数,第1张

(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的相关的内容的介绍,望你会有所收获。

编译前提是安装Python2.2以上: (1)将$(BOOST)\tools\jam\src\bin.ntx86下的bjam.exe拷贝至$(BOOST)目录下。 (2)编译:bjam –-toolset=msvc –-with-python –-build-type=complete stage。 (3)编译结果是生成dll和lib文件。

1、查看boost编译是否已经生成boost_python-vc120-mt-gd-1_58.lib。注意python与boost是32位或64位版本,版本要对应。

2、vc环境加入相应的目录

我之前因为boost编译是的64位,而python是32位的,造成链接失败。可以使用dumpbin /headers xxx.dll检查是32位还是64位。

仅供参考。