如何使用cython向c++公开python类

2024-04-25 13:53:54 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用Python将Python对象公开给C++?我知道如何对函数执行此操作,但不确定是否可以对类执行此操作。在

本质上,我有一个数据结构,它是用C++填充的。填充后,c++代码将调用cython方法并传递该对象。该方法中的cython代码应该能够访问对象的数据。在


Tags: 数据对象方法函数代码数据结构cython本质
1条回答
网友
1楼 · 发布于 2024-04-25 13:53:54

答案是使用"public extension types"(特别是“公共扩展类型”)。在

一个简单的例子是:

cdef extern from "cpp_file.hpp":
    void modifyMyClass(MyClass)

cdef public class MyClass [object TheNameThisWillHaveInC, type TheNameTheTypeWillHaveInC]:
    cdef int a
    cdef int b

def example():
    cdef MyClass a = MyClass()
    modifyMyClass(a)

注意“public class MyClass”。您还需要指定两个名称:一个用于表示MyClass的结构名称,另一个用于类型对象的名称。在

在上面运行Cython会生成一个包含以下内容的头文件(我只复制了有趣的部分)。在

^{pr2}$ <>你只需在C++代码中包含那个头文件。我给出的示例函数在C++中如下:

void modifyMyClass(TheNameThisWillHaveInC* obj) {
   obj->a = 5; // etc
}
我不认为你使用C++而不是C的事实改变了很多。你唯一需要做的就是在C++模式下运行Cython(在{{CD3}}中指定语言,以避免命名问题。在

相关问题 更多 >

    热门问题