![图片[1]-python 如何调用cpp-uusu优素-乐高,模型,3d打印,编程](http://uusucn.zbbe.cn/wp-content/uploads/2024/01/5ee9b293bc84c397.jpg)
一、写一个cpp
这个cpp的功能是 “加法器”,extern “C”的存在是因为python 的ctype可以调用C但是没有Cplustype~~~所以,~~~
#include"/home/oujie/anaconda3/envs/pytorch-master/include/python3.7m/Python.h"
#功能实现在这个函数中
extern"C"
intadd_func(inta,intb)
{
returna+b;
}
#下面的这些是调用相关的API把数据格式进行转换,让python可以调用,这也是python的头文件里面的定义好的
extern"C"
staticPyObject*_add_func(PyObject*self,PyObject*args)
{
int_a,_b;
intres;
if(!PyArg_ParseTuple(args,"ii",&_a,&_b))
returnNULL;
res=add_func(_a,_b);
returnPyLong_FromLong(res);
}
extern"C"
staticPyMethodDefCppModuleMethods[]=
{
{
"add_func",
_add_func,
METH_VARARGS,
""
},
{NULL,NULL,0,NULL}
};
extern"C"
PyMODINIT_FUNCinitcpp_module(void)
{
(void)Py_InitModule("cpp_module",CppModuleMethods);
}
二、对上面的这个CPP编译
#linux下面编译成so gcc-oadd_demo.so-shared-fPICadd_demo.c #windows下编译成dll
importctypes
dll=ctypes.cdll.LoadLibrary
lib=dll("./add_demo.so")
print("pythoncallcppso:")
p=lib.add_func(2,3)
print(p)原文来自:https://www.py.cn © 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END

















































暂无评论内容