为c++的程序扩展接口
假设我们已经有写好的c++程序,那么,我们不需要改动原来的c++程序,只需要添加一个接口文件,把我们需要的接口调用boost-python来封装以下吧
原来的c++程序
test.cpp:
04 |
return "hello, world" ; |
我们编写的接口文件
b.cpp:
1 |
#include <boost/python.hpp> |
3 |
BOOST_PYTHON_MODULE(hello_bye) |
5 |
using namespace boost::python; |
编译:
我们使用的指令是:
1 |
g++ b.cpp -o hello_bye.so -shared -I/usr/include/python2.6 -lboost_python-gcc43-mt |
解释以下:
b.cpp 目标编译的文件
-o:需要编译成的库文件名称,注意最好和BOOST_PYTHON_MODULE后面的名称一致,否则不知到什么原因,加载不进来
-I:调用python的头文件,这个如果不知道,到/usr/include/下看一看,需要和你的运行的python版本一致,不知道那个 版本的话,命令行下:python -V查看
-l:需要链接的boost库,如果你不知到那个是,请在命令行下输入:gcc -v 查看gcc版本,然后到/lib/下输入:ls libboost_python* 查找有没有相同版本的库
调用
把编译好的so,放到系统的lib路径,或者和python程序(或者调用python是shell的当前目录)同一位置,反正能让python找到你的库
调用以下
01 |
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) |
03 |
Type "help" , "copyright" , "credits" or "license" for more information. |
07 |
>>> print hello_bye.hello() |
然后
然后就没有什么了,boost-python其实还提供了很多其他的东西,比如说怎么导出类,怎么类的方法,以及类的方法的访问权限,构造函数怎么导出,等等,但是我们已经入门了,剩下的东西,不就是查文档就行了吗,和查字典一样,没什么技术了。