码迷,mamicode.com
首页 > 编程语言 > 详细

深入学习python (七) 如何用python调用C/C++接口

时间:2014-06-05 00:57:08      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:python   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
>>>


其实python调用C/C++的方法还有其他的,以后再解决这根小骨头吧。。。

深入学习python (七) 如何用python调用C/C++接口,布布扣,bubuko.com

深入学习python (七) 如何用python调用C/C++接口

标签:python   c++   

原文地址:http://blog.csdn.net/jerk_zhang/article/details/27107667

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!