Python调用C/C++的接口(Boost)

为c++的程序扩展接口

假设我们已经有写好的c++程序,那么,我们不需要改动原来的c++程序,只需要添加一个接口文件,把我们需要的接口调用boost-python来封装以下吧

原来的c++程序

test.cpp:

 
 
01#include <iostream>
02char const* hello()
03{

04return "hello, world";
05}
06void bye()
07{
08using namespace std;
09cout << "bye" <<endl;
10}

我们编写的接口文件

b.cpp:

 
 
1#include <boost/python.hpp>
2#include "test.cpp"
3BOOST_PYTHON_MODULE(hello_bye)
4{
5using namespace boost::python;
6def("hello", hello);
7def("bye",bye);
8}

编译:

我们使用的指令是:

 
 
1g++ 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找到你的库

调用以下

 
 
01Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
02[GCC 4.3.3] on linux2
03Type "help", "copyright", "credits" or "license" for more information.
04>>> import hello_bye
05>>> hello_bye.hello()
06'hello, world'
07>>> print hello_bye.hello()
08hello, world
09>>> hello_bye.bye()
10bye
11>>>

然后

然后就没有什么了,boost-python其实还提供了很多其他的东西,比如说怎么导出类,怎么类的方法,以及类的方法的访问权限,构造函数怎么导出,等等,但是我们已经入门了,剩下的东西,不就是查文档就行了吗,和查字典一样,没什么技术了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值