Qt使用CC扩展Python内置模块

之前和大家介绍过在C/C++中嵌入Python,本次和大家分享下使用C/C++扩展Python内置模块的方法。

被扩展出来的新模块可以做两件无法直接在Python中完成的事情:一可以实现新的内置对象类型,二则可以调用C库函数和一些其他的系统调用。

使用平台:ubuntu14.04、python3.5、Qt5.5.1

下面借助Qt创建一个叫libpy3extend的Python内置模块,它可以做一个简单的加法操作,还可以返回一个自定义的数据类型。调用形式如下:

importlibpy3extend

libpy3extend.extend_add(1,99)

ibpy3extend.extend_str()

先使用Qt建一个生成库的工程,之后按照步骤进行操作即可。

1.extend.cpp文件首先是包含所用到的头文件:

#includeiostream

#includepython3.5/Python.h

2.向extend.cpp模块文件中添加C函数,该函数在执行libpy3extend.extend_add(1,99)时被调用。C函数总是有两个参数,通常命名为self和args。

staticPyObject*extend_add(PyObject*self,PyObject*args){(void)(self);PyObject*pArgs=NULL;intresult=0;intarg1=0;intarg2=0;if(!PyArg_ParseTuple(args,ii,arg1,arg2)){std::cerrparameterserrorstd::endl;Py_INCREF(Py_None);pArgs=Py_None;}else{result=arg1+arg2;pArgs=Py_BuildValue(i,result);}returnpArgs;}

args参数是一个元组对象,使用PyArg_ParseTuple()函数来解析,解析规则可参考python文档




转载请注明:http://www.aierlanlan.com/cyrz/5841.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了