【发布时间】:2021-10-01 00:07:09
【问题描述】:
我在foo.cpp 中定义了一个非常简单的 c++ 类:
class Foo
{
int x;
public:
Foo()
{}
Foo(int _x)
: x ( _x )
{}
int getX() { return x; }
void print()
{ std::cout << "Foo { " << x << "}" << std::endl; }
};
在尝试用 cython 包装它时,我使用以下声明创建 foo.pxd:
cdef extern from "foo.cpp":
cdef cppclass Foo:
Foo() except +
Foo(int) except +
int x
int getX()
void print()
但是,在尝试构建它并将 cimport 构建到我的 pyx 源文件中时,它给了我以下编译错误:
Error compiling Cython file:
------------------------------------------------------------
...
cdef cppclass Foo:
Foo() except +
Foo(int) except +
int x
int getX()
void print()
^
------------------------------------------------------------
foo.pxd:9:13: Empty declarator
Error compiling Cython file:
------------------------------------------------------------
...
cdef cppclass Foo:
Foo() except +
Foo(int) except +
int x
int getX()
void print()
^
------------------------------------------------------------
foo.pxd:9:13: Syntax error in C variable declaration
我试图关注this tutorial,但在我的情况下似乎不起作用。即使将其修改为Foo::print 方法采用整数参数y,并将foo.pxd 更新为void print(int),我也会得到同样的错误。
我可能做错了什么,为什么会出现这种行为?
【问题讨论】:
-
我建议将您的解决方案作为答案发布,而不是将其包含在问题中。 (是的,您可以回答自己的问题。)
-
我知道,我只是不确定它是否值得,但我会这样做@KeithThompson
-
我不认为这是stackoverflow.com/questions/8882649/…的完全重复,但它非常接近
标签: python c++ cython python-c-api