一、寫一個cpp
這個cpp的功能是“加法器”,extern“C”的存在是因?yàn)?strong>python的ctype可以調(diào)用C但是沒有Cplustype~~~所以,~~~
#include"/home/oujie/anaconda3/envs/pytorch-master/include/python3.7m/Python.h"
#功能實(shí)現(xiàn)在這個函數(shù)中
extern"C"
intadd_func(inta,intb)
{
returna+b;
}
#下面的這些是調(diào)用相關(guān)的API把數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換,讓python可以調(diào)用,這也是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
三、寫一個python文件調(diào)用
importctypes
dll=ctypes.cdll.LoadLibrary
lib=dll("./add_demo.so")
print("pythoncallcppso:")
p=lib.add_func(2,3)
print(p)
以上內(nèi)容為大家介紹了python如何調(diào)用cpp,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。