长野博死了么:python中调用c++(Boost
来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 07:46:18
使用Boost,在python中调用c++程序
简介
boost-python提供了方便的使用python调用c/c++程序的接口,我们来看一看怎么样使用这个吧。
注意:所有程序,在ubuntu9.04上实验通过,这篇文章没有介绍怎样安装boost,我是使用apt自动安装的。
python调用c++的步骤:
为c++的程序扩展接口
假设我们已经有写好的c++程序,那么,我们不需要改动原来的c++程序,只需要添加一个接口文件,把我们需要的接口调用boost-python来封装以下吧
原来的c++程序
test.cpp:
view sourceprint?01
#include
02
char
const
* hello()
03
{
04
return
"hello, world"
;
05
}
06
void
bye()
07
{
08
using
namespace
std;
09
cout <<
"bye"
<
10
}
我们编写的接口文件
b.cpp:
view sourceprint?1
#include
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
}
编译:
我们使用的指令是:
view sourceprint?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找到你的库
调用以下
view sourceprint?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其实还提供了很多其他的东西,比如说怎么导出类,怎么类的方法,以及类的方法的访问权限,构造函数怎么导出,等等,但是我们已经入门了,剩下的东西,不就是查文档就行了吗,和查字典一样,没什么技术了。
python中调用c++(Boost
[Python]python和C语言分别实现快速排序
[Python]的效率实在是比不上c!
在VC中调用 WebService
[Python]python怎样从表单中提取数据?
[C#/C ]C#调用非托管DLL的APIs
Python
python
Linux C编程源代??2)--进程控制(fork调用
C++Builder及VC的DLL相互调用
JNA 实现Java调用C动态链接库
C/C++函数调用约定与函数名称修饰规则
【转】在VB应用程序中调用Excel2000
vc中调用Flex的总结
在C#中如何调用dll文件
三、FLASH调用外部文件---调用外部*.swf文件(加载到影片剪辑中)(5) - Qz...
Silverlight中同步调用WebClient的解决办法,是同步!
在C#中调用API获取网络信息和流量
在matlab中调用ansys的方法 [转,原创:Elvin]
c#cs文件互相调用(类似C++里面的include)
android wrapper C调用java api - 示韦BadSmile的日志 - 网易博客
[Python]python随笔
[Python]Python笔记-
[Python]python编程 FAQ