您的位置:首页 > 编程语言 > C语言/C++

c++ python交互之boost.python 简集之普通函数

2011-04-14 18:30 507 查看
我们做的项目测试代码用的是python,但是由于开发用的代码是c++,所以很多交互的地方是需要python调用c++的代码。为此我们将c++的函数打包成.so文件被调用。在实际项目中会遇到各种类型的应用,项目组的郭松同学做了比较详细的总结。我将之收集成文,记录如下,便于自己以后翻阅,也为自己博客添砖加瓦,感谢的话就不说了,如果有朋友因为这篇文章受益,请感谢小松同学。

1.普通函数转换

C++代码: src.cpp



#include <iostream>

#include <string>

using namespace std;

/************************************************ simple method *************************************/

char const* testA()

{

return "just a test";

}

string testB(string str)

{

cout << str << endl;

return str;

}

void testC(string str,int num)

{

cout << "str is : " << str << endl;

cout << "int is : " << num << endl;

}

python 转换代码
: src4py.cpp

#include <boost/python.hpp>

#include "src.cpp"

using namespace boost::python;

BOOST_PYTHON_MODULE(test) //test是python中模块名字

{

def("a", testA);//将testA映射为a 函数

def("b", testB);

def("c", testC);

}

Makefile文件

因为是第一篇将makefile也展示一下,后面文章将不记录Makefile,因为都一样。
/usr/local/boost_143/include/是事先必须准备的库文件。

all:test.so

rm -rf src.o src4py.o

rm -rf cass_pack_factory_src.o cass_pack_Factorysrc4py.o

test.so:src.o src4py.o

g++ src4py.o -o test.so -shared -fPIC -I /usr/local/python/include/python2.5/ -I /usr/local/boost_143/include/ -L /usr/local/python/lib/python2.5/ -L

/usr/local/boost_143/lib/ -lboost_python

src.o:

g++ -c src.cpp -o src.o

src4py.o:src.o

g++ -c src4py.cpp -o src4py.o -fPIC -I /usr/local/python/include/python2.5/ -I /usr/local/boost_143/include/

clean:

rm -rf src.o src4py.o

rm -rf test.so



python 调用代码:
test.py

import test

test.a()

test.b("just a test!")

test.c("call me string!",7)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: