我尝试使用链接:Calling C/C++ from python?,但我无法做同样的事情,这里我有一个声明extern" C"。请建议假设我有一个名为的函数' function.cpp'我必须在python代码中调用此函数。 function.cpp是:
int max(int num1, int num2)
{
// local variable declaration
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
然后我如何在python中调用这个函数,因为我是c ++的新手。我听说过#cython'但我不知道。
答案 0 :(得分:7)
由于您使用C ++,因此请使用extern "C"
禁用名称修改(或max
将导出为某些奇怪的名称,如_Z3maxii
):
#ifdef __cplusplus
extern "C"
#endif
int max(int num1, int num2)
{
// local variable declaration
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
将其编译成某个DLL或共享对象:
g++ -Wall test.cpp -shared -o test.dll # or -o test.so
现在您可以使用ctypes
调用它:
>>> from ctypes import *
>>>
>>> cmax = cdll.LoadLibrary('./test.dll').max
>>> cmax.argtypes = [c_int, c_int] # arguments types
>>> cmax.restype = c_int # return type, or None if void
>>>
>>> cmax(4, 7)
7
>>>