文档章节

使用MetaSIP自动生成SIP封装C++到Python接口

openthings
 openthings
发布于 2015/06/24 11:19
字数 810
阅读 537
收藏 4

    利用SIP将C++封装为Python,SIP采用手动书写,但对于比较庞大的工程手动书写sip文件就显得很苍白无力。QT利用MetaSIP这款工具生成sip文件,然后手动修改部分SIP文件,然后利用python书写 configuer.py配置文件生成Makefile文件,最后执行Make脚本将C++生成为Python。下面主要介绍MetaSIP安装以及配置 过程,以及利用如何利用MetaSIP生成SIP。

1.安装

1)  所需软件

MetaSIP、Python3.x、Qt4、PyQt4、dip、sip、QScintilla2、GCCXML、cmake、mingw

MetaSIP下载地址:http://www.riverbankcomputing.com/hg/

PyQt4、sip、QScintilla2均可以到http://www.riverbankcomputing.com/news下载

dip一定要采用http://www.riverbankcomputing.com/hg/的版本

GCCXML到http://gccxml.github.io/HTML/Index.html下载

2)安装

MetaSIP只支持Python3.x,在安装其之前保证Python3.x和QT安装

 a.  安装SIP(参照上篇利用sip封装C++)

 b.  安装PyQt4

python configure.py

make

make install

c. 安装QScintilla2

cd Qt4Qt5
qmake qscintilla.pro
make
make install

d. 安装dip

启动命令行工具,进入dip目录

make

pythonsetup.py install

注意:执行python setup.py install时,如果报如下错误


则查看dip目录下是否有VERSION文件(一般报错是没有的^_^),则新建一个VERSION,内容为56a217326678

e. 安装GccXml

GccXml的编译需要借助Cmake,安装时需要提前安装CMake,然后执行下面命令:

cmake ../gccxml -DCMAKE_INSTALL_PREFIX:PATH=/installation/path

make

make instal

f. 安装MetaSIP

make

makeinstall

注意:编译时候,如果报如下错误



则在MetaSIP目录下创建VERSION文件,其内容为b009740bb135

如上步骤,MetaSIP就安装完成了,启动命令窗口,msip -h,弹出以下窗口,则说明MetaSIP安装完成


2.利用MetaSIP生成SIP

启动命令窗口,输入 msip回车,则弹出以下窗口:


Edit中依次设置ModulesPlatformsVersions(Linux下不好截图有部分图片是window下截图)



点击New按钮,新建一个工程,并且选择上述步骤所设置的版本


然后如下图所示依次设置下面项


点击update按钮,然后点击scan按钮,将会扫描指定目录下的所有头文件,扫描后的结果如下所示:


选中具体头文件,File Header部分就会高亮,如下图所示



点击update按钮,然后点击parse按钮,就会将选中的头文件的类以及相关变量、命名空间等解析出来,如下图所示


在具体的类以及函数上单击右键,将Uncheck设置为check,然后保存文件,文件的后缀名为*.msp

启动命令窗口,进入*.msp文件所在目录,执行以下命令:

msip -g dir *.msp

dir:SIP文件生成目录

*.msp:msp文件路径

到此SIP文件则已经生成,只需要按照上篇文章所述,生成Python即可!


本文转载自:http://blog.csdn.net/haoswich/article/details/45841825

openthings
粉丝 320
博文 1129
码字总数 675031
作品 1
东城
架构师
私信 提问
加载中

评论(1)

zengweishu
zengweishu
你那里还有MetaSIP软件包吗,官方关闭下载了。有的话可以发的我的邮箱822783615@qq.com.谢谢你了!
在UbuntuKylin15.04上安装GIScript2015

GIScript入门教程参见:http://my.oschina.net/u/2306127/blog/484213,这里介绍基于SIP的C++封装为Python的方法和使用过程。 GIScript2015版采用了新的SIP封装,从而可以更好地与C++接口保持...

openthings
2015/06/24
311
0
使用SIP对C库进行Python封装

Python中使用C/C++模块有许多工具,大名鼎鼎的有SWIG(英文意思为:豪饮)、SIP(英文意思为:啜饮,小口的喝),还有boost.python等。其中SIP是从SWIG发展而来,专为Python调用C/C++模块使用...

openthings
2015/02/05
863
0
使用SIP对C++类进行Python封装

本文来自于: http://pyqt.sourceforge.net/Docs/sip4/using.html#a-simple-c-example 本人翻译,欢迎转载,赠人玫瑰,手留余香。 Using SIP Bindings are generated by the SIP code generat......

openthings
2015/02/06
1K
0
基于Python插件的C++扩展框架

这里介绍一种典型的C++应用框架,使用Python进行扩展。比如GIMP/Blender/QGIS等等Linux上面的开源软件,还有很多商业软件也采用了这一技术路线。但是由于Python的灵活性,可以使用C/C++直接扩...

openthings
2015/08/09
1K
1
Python-SIP 4.14 发布

Python-SIP 4.14 发布,该版本基于 PyQt 4.9.5,也可支持 MSVC 2010 for Python 3.3. SIP 是为Python生成C++接口代码的工具,它与 SWIG 类似,但使用不同的接口格式。它用作创建 PyQt 和 Py...

oschina
2012/10/01
996
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
今天
58
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
今天
27
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
今天
61
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
今天
57
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
今天
50
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部