具有拆分定义的 Cython 编译
Cython compilation with split definition
我试图在 pxd
文件中声明一个 Cython class,但是当我尝试分配一个指针时无法编译它。
以下 pyx
编译正常:
cdef class Foo:
cdef void *_void
cdef set_ptr(self, void *ptr):
self._void = ptr
但是当我根据 Cython documentation 将它分成 2 个文件时:
.pxd
cdef class Foo:
cdef void *_void
cdef set_ptr(self, void *ptr)
.pyx
cdef class Foo:
cdef set_ptr(self, void *ptr):
self._void = ptr
我收到以下错误:
Error compiling Cython file:
------------------------------------------------------------
...
# -*- coding: utf-8 -*-
cdef class Foo:
cdef set_ptr(self, void *ptr):
self._void = ptr
^
------------------------------------------------------------
test/test.pyx:5:21: Cannot convert 'void *' to Python object
我该怎么做才能让它编译成功?
通过使 setup.py
中的扩展名称与 pxd
和 pyx
文件的名称相同,问题得以解决。似乎 Cyhton 没有编译 pxd
文件。
我试图在 pxd
文件中声明一个 Cython class,但是当我尝试分配一个指针时无法编译它。
以下 pyx
编译正常:
cdef class Foo:
cdef void *_void
cdef set_ptr(self, void *ptr):
self._void = ptr
但是当我根据 Cython documentation 将它分成 2 个文件时:
.pxd
cdef class Foo:
cdef void *_void
cdef set_ptr(self, void *ptr)
.pyx
cdef class Foo:
cdef set_ptr(self, void *ptr):
self._void = ptr
我收到以下错误:
Error compiling Cython file:
------------------------------------------------------------
...
# -*- coding: utf-8 -*-
cdef class Foo:
cdef set_ptr(self, void *ptr):
self._void = ptr
^
------------------------------------------------------------
test/test.pyx:5:21: Cannot convert 'void *' to Python object
我该怎么做才能让它编译成功?
通过使 setup.py
中的扩展名称与 pxd
和 pyx
文件的名称相同,问题得以解决。似乎 Cyhton 没有编译 pxd
文件。