基于Boost.Python库的混合语言编程和其应用.pdfVIP

基于Boost.Python库的混合语言编程和其应用.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Boost.Python 库的混合语言编程及其应用 徐凌,尹勇 武汉理工大学信息学院,湖北武汉(430070 ) E-mail :xllinux@ 摘 要:Boost.Python 是著名的c++库Boost 的一个组件,它实现了c++和python 两种功能 丰富的优秀的语言环境间的无缝协作。本文介绍了Boost.Python 库的特点和使用方法,并通 过实例,说明了在制作用户界面时使用脚本语言的具体方法。 关键词:Boost;Python;C++;脚本语言;混合语言编程 中图分类号:TP393 1.引言 混合语言编程是指采用两种或两种以上的编程语言来进行程序开发的方法,一种常见情 况是系统编程语言(例如 C,C++)和脚本语言(如 python ,lua)之间的混合。混合语言编程的 软件开发方法近年来日益受到重视[1] 。采用此方法的好处可以充分利用不同编程语言的各自 优势。系统编程语言开发的程序运行速度快,但开发周期较长;脚本语言方便灵活,代码简短, 开发效率可提高5-10 倍,但程序运行速度慢。合理地结合两者的优点,取长补短,可以快速 高效地构建应用程序并维持相当的性能。 Python[2]是最近日益流行的一种脚本语言,它所具有的多种特性使其非常适用于混合语 言编程。Boost.Python[3]是一个开源的C++程序库,提供类似IDL 的接口来把C++类和函数 绑定到Python 。借助于C++ 强大的编译时内省能力和最新的元编程技术,它完全用C++来 实现,而不用引入新的语法。Boost.Python 丰富的特性和高级接口使从底层起按混合系统的 方式设计组件成为可能,从而使程序员可以轻松和连贯的同时使用C++高效的编译时多态和 Python 极其方便的运行时多态。 2 .Boost.Python 的特点 目前有多个工具可以实现跟 Boost.Python 类似的功能,如 SWIG[4] ,SIP 等。但是它们 有很大的不同。SWIG 和 SIP 都定义了一种接口描述语言。需要先写一个接口描述文件, 用于描述我要导出的 C++ 函数和类。然后通过一个翻译器,将接口描述文件翻译成 C++ 程序。最后编译连接生成的 C++ 程序来生成扩展库。而 Boost.Python 用于导出 C++ 函数 和类的时候,我需要添加的也是 C++ 的代码,这是 Boost.Python 的最大特点之一。 Boost.Python 的另外一个优点是,它的设计目标就是让 C++ 程序库可以透明地导出到 Python 中去。即在完全不修改原来 C++ 程序的情况下,导出给 Python 用。在这种设计理 念下设计出来的 Boost.Python 比同类工具支持了给完善的 C++ 特性,能够最大程度地保 证不修改原 C++ 程序。 3 .Boost.Python混合编程方法 3.1 用C++为Python 编写扩展模块 使用 Boost.Python 库,我们可以方便地将 C++ 语言写的程序库用于 Python 语言,可 以用 Python 更好地完成更多的任务。例如,在某个C++应用程序中,我们用一组插件来实 现一些具有统一接口的功能,我们使用 Python 来代替动态链接库形式的插件,这样可以方 -1- 便地根据需求的变化改写脚本代码,而不是必须重新编译链接二进制的动态链接库; Boost.Python 为C++程序提供的封装能力,是基于template 机制的。我们要做的,是把 C++程序中的函数、类、数据成员等等,都变成Python 对象。Boost.Python

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档