打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python中调用c++(Boost

使用Boost,在python中调用c++程序

简介

boost-python提供了方便的使用python调用c/c++程序的接口,我们来看一看怎么样使用这个吧。

注意:所有程序,在ubuntu9.04上实验通过,这篇文章没有介绍怎样安装boost,我是使用apt自动安装的。

python调用c++的步骤:

为c++的程序扩展接口

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

原来的c++程序

test.cpp:

01 #include <iostream>
02 char const* hello()
03 {
04 return "hello, world";
05 }
06 void bye()
07 {
08 using namespace std;
09 cout << "bye" <<endl;
10 }

我们编写的接口文件

b.cpp:

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

编译:

我们使用的指令是:

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)
02 [GCC 4.3.3] on linux2
03 Type "help", "copyright", "credits" or "license" for more information.
04 >>> import hello_bye
05 >>> hello_bye.hello()
06 'hello, world'
07 >>> print hello_bye.hello()
08 hello, world
09 >>> hello_bye.bye()
10 bye
11 >>>

然后

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
centOS下编译C++程序
用boost.python为python写c/c 扩展曲折配置最终成功历程
gcc系列教程
SDL入门教程(一):3、MinGW 下的安装与设置
Linux GCC 编译过程 及优化
Linux下编译C++
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服