如何从Python调用类的C ++函数

How to call C++ functions of a class from a Python

本问题已经有最佳答案,请猛点这里访问。

我尝试了链接:从Python调用C/C++?但是我不能这样做,这里我有一个声明外部"c"的问题,所以请建议假设我有一个名为"function.cpp"的函数,并且我必须在python代码中调用这个函数。function.cpp是:

1
2
3
4
5
6
7
8
9
10
11
12
int max(int num1, int num2)
 {
  // local variable declaration
  int result;

  if (num1 > num2)
    result = num1;
  else
    result = num2;

  return result;
 }

然后我可以在Python中调用这个函数,因为我是C++的新手。我听说过"赛通",但我不知道。


自从您使用C++,Disable name mangling using extern"C"(or maxwill be exported into some weird name like _Z3maxii):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#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;
}

Compile it into some DLL or shared object:

ZZU1

现在你可以用ctypes

1
2
3
4
5
6
7
8
9
>>> 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
>>>