首页 > 代码库 > 深入学习python (七) 如何用python调用C/C++接口
深入学习python (七) 如何用python调用C/C++接口
python这门优美而以人为本的语言的人性化导致其开发效率的高,高的同时他牺牲了的程序运行效率,在项目开发的后期,可以通过对某些耗时的松耦合的单独的瓶颈模块进行C++重构,然后直接用python改调用C++写的模块即可。
看过了网上的一些例子,自己也来试一试:
首先是一个C++程序的代码,test.cpp如下:
#include <iostream> char const* hello() { return "hello, world"; } void bye() { using namespace std; cout << "bye" <<endl; }
接着,编写接口文件,在接口文件中引入之前编写的test.cpp程序,接口文件为b.cpp,代码如下:
#include <boost/python.hpp> #include "test.cpp" BOOST_PYTHON_MODULE(hello_bye) { using namespace boost::python; def("hello", hello); def("bye",bye); }
这时候,在终端输入:
g++ b.cpp -o hello_bye.so -shared -I/usr/include/python2.7 -lboost_python-gcc43-mt搞定了。。。
没有那么简单,至少我在mac OS X系统下没成功,捯饬了半天都没成功,首先要安装boost库,brew install boost即可,很重的一个库,编译的时候,cpu满负荷运转,很吓人。
然后,还是不成功,出错,debug了半天,暂时放在这,改天更新此处,欢迎指教我该如何继续,老是出错啊,google与stackoverflow也不行。
改天吧。。。
参考其他的网络教程,
结果测试如下:
>>> import hello_bye >>> hello_bye.hello() 'hello, world' >>> print hello_bye.hello() hello, world >>> hello_bye.bye() bye >>>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。