boost.python 初级教程

30 篇文章 1 订阅
7 篇文章 0 订阅

python便于快速开发,并且python底层是c,与c的兼容性非常好,用python快速开发,用c++开发性能要求较高的模块是一个非常理想的选择。

python自带一个ctypes,使用非常方便,但是不支持c++的类,swig使用又比较繁锁,幸好还有boost.python,使用非常方便,并且可以导出类!


boost.python的安装:

我的环境是win7 x64 + vs2010

windows下有简单的办法,直接安装,速度第一位,暂时不需要,我就不再研究如何编译了。

直接在下载页找到installer,http://www.boost.org/doc/libs/1_51_0/more/getting_started/windows.html

让它去安装就可以了,这个是在线,需要一定时间,看你网速了。

安装好后,在项目的vc++目录,给包含目录和库目录添加上python和boost的目录

python 的是$(PYTHONPATH)\include和$(PYTHONPATH)\libs

boost 的目录是  安装目录\boost  和安装目录\lib


附上官方翻译过来的hello例子:

Hello.cpp
char const* greet()
{
   return "hello, world";
}

#include <boost/python.hpp>

BOOST_PYTHON_MODULE(hello_text)
{
    using namespace boost::python;
    def("greet", greet);
}
注:用boost.python包装的这一段可以不和c++函数写一个文件里,也就是说,假如hello已经包装成一个lib,可以在外边写接口,非常方便!

编译时,属性->配置属性->常规->项目默认值->配置类型 选择dll

编译好后,把生成的dll文件改名为hello.pyd

最后在python中调用即可,和直接使用python模块没有区别。

>>> import hello_ext
>>> print hello_ext.greet()
hello, world


今天学习了最基本的boost.python功能,明天继续学习。

注:boost.python 和 ctypes不一样,ctypes针对的c,所以支持c几乎所有的功能,包括非常重要的指针。而boost.python针对的是c++的类,我在google上没有找到它支持char* , int* 等指针传递的方法(返回值可以支持char*,但char*做参数不可以),可能boost.python封装c++时,已经将c++的c那部分内容选择性屏蔽了,但是boost.python提供了对c++的vector,list , map等的转换方法,不失为曲线救国的方法。

附上官方教程:http://www.boost.org/doc/libs/1_51_0/libs/python/doc/tutorial/doc/html/index.html



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值