Python绑定C++程序具体实现方法浅谈

Python编程语言的应用范围比较广泛,应用方式灵活,可以很方便的帮助开发人员实现一些特定的功能需求。比如今天为大家介绍的有关Python绑定C++程序的相关操作,大家就可以从中了解到这一语言的应用特点。#t#

创新互联从2013年创立,先为绥江等服务建站,绥江等地企业,进行企业商务咨询服务。为绥江企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

很多时候需要给C++程序提供一种使用上的灵活性,脚本语言在这里就变得很重要了。采用Boost.Python为C++程序加一层shell,比较简单、简洁,对原有的C++代码也没有侵入性。今天试了一下,感觉不错,可以把它集成在现在正在做的项目中。

为Python绑定C++程序过程基本上如下:

(1)为C++类编写一个Boost.Python wrapper

(2)编译成so

(3)可以在python中调用了

针对David Abrahams的例子,偶的源文件如下:

Python绑定C++程序例1:hello world 函数

(1)hello.cpp

 
 
 
  1. #include < stdexcept> 
  2. char const* greet(unsigned x)  
  3. {  
  4. static char const* const msgs[] = { "hello", "Boost.Python", "world!" };  
  5. if (x > 2)   
  6. throw std::range_error("greet: index out of range");  
  7. return msgs[x];  

(2)hello_wrap.cpp

 
 
 
  1. #include < boost/python.hpp> 
  2. using namespace boost::python;  
  3. char const* greet(unsigned x);  
  4. BOOST_PYTHON_MODULE(hello)  
  5. {  
  6. def("greet", greet, "return one of 3 parts of a greeting");  

(3)makefile

 
 
 
  1. PYTHON_INCLUDE_FLAGS = \  
  2. -I/usr/include/python2.4  
  3. LIB_FLAGS = \  
  4. -lboost_python  
  5. SOURCE = \  
  6. hello.cpp hello_wrap.cpp  
  7. all:${SOURCE}  
  8. g++ ${PYTHON_INCLUDE_FLAGS} ${SOURCE} ${LIB_FLAGS} -shared -o hello.so  
  9. clean:  
  10. rm -f hello *.o *.out *.so 

(4)hello.py

 
 
 
  1. import hello  
  2. for x in range(3):  
  3. print hello.greet(x) 

Python绑定C++程序例2:hello world类

(1)hello_class.cpp

 
 
 
  1. #include < boost/python.hpp> 
  2. #include < iostream> 
  3. using namespace std;  
  4. using namespace boost::python;  
  5. class World  
  6. {  
  7. public:  
  8. void set(std::string msg) { this->msgmsg = msg; }  
  9. void greet()   
  10. {  
  11. cout < <  this->msg < <  endl;   
  12. }  
  13. string msg;  
  14. };  
  15. BOOST_PYTHON_MODULE(hello)  
  16. {  
  17. class_< World> w("World");  
  18. w.def("greet", &World::greet);  
  19. w.def("set", &World::set);  
  20. }; 

(2)makefile

 
 
 
  1. PYTHON_INCLUDE_FLAGS = \  
  2. -I/usr/include/python2.4  
  3. LIB_FLAGS = \  
  4. -lboost_python  
  5. SOURCE = \  
  6. hello_class.cpp  
  7. all:${SOURCE}  
  8. g++ ${PYTHON_INCLUDE_FLAGS} ${SOURCE} ${LIB_FLAGS} 
    -shared -o hello.so  
  9. clean:  
  10. rm -f hello *.o *.out *.so(3)hello_class.py  
  11. import hello  
  12. planet = hello.World()  
  13. planet.set('howdy')  
  14. planet.greet() 

以上就是对Python绑定C++程序的相关方法的介绍。

网页题目:Python绑定C++程序具体实现方法浅谈
当前URL:http://www.shufengxianlan.com/qtweb/news35/23685.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联