python学习_python怎么用c++代码

大师都晓得Python的长处是开辟服从高,运用便当,C++则是运转服从高,这二者能够相反相成,不论是正在Python名目中嵌入C++代码,或者是正在C++名目顶用Python完成核心功用,均可能碰到Python挪用C++模块的需要.

python学习_python怎么用c++代码

上面罗列出会合c++代码导出成Python接口的办法,一同来进修进修吧。

原生态导出(推选进修:Python视频教程)

Python表明器便是用C完成,因而只需咱们的C++的数据构造能让Python看法,实际上便是能够被间接挪用的。咱们完成test1.cpp以下

#include <Python.h>
int Add(int x, int y)
{
return x + y;
}
int Del(int x, int y)
{
return x - y;
}
PyObject* WrappAdd(PyObject* self, PyObject* args)
{
int x, y;
if (!PyArg_ParseTuple(args, "ii", &x, &y))
{
return NULL;
}
return Py_BuildValue("i", Add(x, y));
}
PyObject* WrappDel(PyObject* self, PyObject* args)
{
int x, y;
if (!PyArg_ParseTuple(args, "ii", &x, &y))
{
return NULL;
}
return Py_BuildValue("i", Del(x, y));
}
static PyMethodDef test_methods[] = {
{"Add", WrappAdd, METH_VARARGS, "something"},
{"Del", WrappDel, METH_VARARGS, "something"},
{NULL, NULL}
};
extern "C"
void inittest1()
{
Py_InitModule("test1", test_methods);   
}

编译饬令以下

g++ -fPIC -shared test1.cpp -I/usr/include/python2.7 -o test1.so

-fPIC:天生地位有关目的代码,合用于静态毗连;
-L path:透露表现正在path目次中搜刮库文件,如-L.透露表现正在以后目次;
-I path:透露表现正在path目次中搜刮头文件;
-o file:订定输入文件为file;
-shared:天生一个同享库文件;

运转Python表明器,测试以下

>>> import test1
>>> test1.Add(1,2)
3

这里要留意一下多少点

假如天生的静态库名字为test1,则源文件里必需有inittest1这个函数,且Py_InitModule的第一个参数必需是“test1”,不然Python导入模块会失败

假如是cpp源文件,inittest1函数必需用extern "C"润色,假如是c源文件,则没有需求。缘由是Python表明器正在导入库时会寻觅initxxx如许的函数,而C以及C++对于函数标记的编码体式格局差别,C++正在对于函数标记停止编码时会思索函数长度以及参数范例,详细能够经过nm test1.so检查函数标记,c++filt东西可经过标记反解出函数原型

更多Python相关技能文章,请拜访Python教程栏目停止进修!

以上便是python怎样用c++代码的具体内容,更多请存眷酷吧易资源网别的相关文章!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

酷吧易资源网 python教程 python学习_python怎么用c++代码 https://www.kubayi.com/4893.html

常见问题

相关文章

评论
暂无评论