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

<p>我们做的项目测试代码用的是python,但是由于开发用的代码是c++,所以很多交互的地方是需要python调用c++的代码。为此我们将c++的函数打包成.so文件被调用。在实际项目中会遇到各种类型的应用,项目组的郭松同学做了比较详细的总结。我将之收集成文,记录如下,便于自己以后翻阅,也为自己博客添砖加瓦,感谢的话就不说了,如果有朋友因为这篇文章受益,请感谢小松同学。</p>
<p>1.普通函数转换</p>
<p><strong>C++代码: src.cpp<br></strong>
</p>
<p><br>
#include <iostream><br>
#include <string><br>
using namespace std;<br><br>
/************************************************ simple method *************************************/<br>
char const* testA()<br>
{<br>
return "just a test";<br>
}<br><br>
string testB(string str)<br>
{<br>
cout << str << endl;<br>
return str;<br>
}<br><br>
void testC(string str,int num)<br>
{<br>
cout << "str is : " << str << endl;<br>
cout << "int is : " << num << endl;<br>
}</p>
<p><strong>python 转换代码</strong>
: src4py.cpp</p>
<p>#include <boost/python.hpp><br>
#include "src.cpp"<br>
using namespace boost::python;<br>
BOOST_PYTHON_MODULE(test) //test是python中模块名字<br>
{<br>
def("a", testA);//将testA映射为a 函数<br>
def("b", testB);<br>
def("c", testC);<br>
}</p>
<p><strong>Makefile文件</strong>
</p>
<p><strong>因为是第一篇将makefile也展示一下,后面文章将不记录Makefile,因为都一样。</strong>
/usr/local/boost_143/include/是事先必须准备的库文件。</p>
<p>all:test.so<br>
rm -rf src.o src4py.o<br>
rm -rf cass_pack_factory_src.o cass_pack_Factorysrc4py.o<br><br>
test.so:src.o src4py.o<br>
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<br>
/usr/local/boost_143/lib/ -lboost_python<br>
src.o:<br>
g++ -c src.cpp -o src.o <br>
src4py.o:src.o<br>
g++ -c src4py.cpp -o src4py.o -fPIC -I /usr/local/python/include/python2.5/ -I /usr/local/boost_143/include/ <br><br>
clean:<br>
rm -rf src.o src4py.o<br>
rm -rf test.so <br></p>
<p></p>
<p><strong>python 调用代码:</strong>
test.py</p>
<p>import test<br><br>
test.a()<br>
test.b("just a test!")<br>
test.c("call me string!",7)</p>
<p></p>
<p></p>
<p></p>
<p></p>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值