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

基于Python插件的C++扩展框架

时间:2015-08-09 22:43:35      阅读:400      评论:0      收藏:0      [点我收藏+]

标签:

这里介绍一种典型的C++应用框架,使用Python进行扩展。比如GIMP/Blender/QGIS等等Linux上面的开源软件,还有很多商业软件也采用了这一技术路线。但是由于Python的灵活性,可以使用C/C++直接扩展,或者基于SWIG、PyQt、PythonQt进行扩展,导致具体实现上存在较大的差异。这里介绍一个笔者摸索的使用Qt+SIP+PyQt+Python的技术路线,是功能比较强大、技术成熟、封装工作量相对较小的一种,而且具有商业级的发展潜力。

大部分的关于Python插件介绍都是关于Python本身的,因为Pytho是个动态语言,实现这一点并不难,但在很多应用中,对性能要求较高,一般需要用C/C++来实现。然后,把Python解释引擎嵌入进去,方便用户进行参数定制、功能扩展和模块组装。

一般情况下,我们把主程序的C++类通过SIP进行封装,然后就可以在Python Shell中通过Python直接调用了。

然后再把Python的控制台集成到主程序窗口中,就可以直接通过Python控制主窗口的操作。这里需要干两件事情,一是把控制台窗口嵌入主窗口中,二是要把主程序的对象句柄传给Python解释器环境。如果由Python自行初始化,主窗口的对象和解释器的对象就不是同一个,无法相互操作。当然,也可以通过全局静态对象等方式共享主程序,但不建议这样做,会影响后续程序的可扩展性。

(未完待续)


基于Python插件的C++扩展框架

标签:

原文地址:http://my.oschina.net/u/2306127/blog/489853

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