这是我的设置:我有下一个要包装的 C++ 类:
// Foo.h
class Foo
{
public:
typedef int MyType;
typedef int ArgType1;
typedef int ArgType2;
...
typedef MyType (*FooFunction) (ArgType1 a, ArgType2 b);
...
void setFooFunction(FooFunction f);
Run Code Online (Sandbox Code Playgroud)
在 C++ 中使用此类的示例:
#include "Foo.h"
...
int fooFun(int a, int b)
{
if (a > b) return a;
else return b;
}
...
int main(int argc, char **argv)
{
...
fooObj->setFooFunction(&fooFun);
...
}
Run Code Online (Sandbox Code Playgroud)
Cython 包装器:
# .pyx
cdef extern from "Foo.h":
cdef cppclass Foo:
void setFooFunction(int *) except +
def …Run Code Online (Sandbox Code Playgroud)