Cython компиляция с разделенным определением - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь объявить класс Cython в файле pxd, но не могу скомпилировать его, когда пытаюсь назначить указатель.

Следующее pyx прекрасно компилируется:

cdef class Foo:
    cdef void *_void

    cdef set_ptr(self, void *ptr):
        self._void = ptr

Но когда я делю его на 2 файла в соответствии с документацией Cython :
. 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

Что я могу сделать для сделать компиляцию?

1 Ответ

0 голосов
/ 21 января 2020

Если имя расширения в setup.py совпадает с именем файлов pxd и pyx, это решило проблему. Похоже, что Cyhton не компилировал файл pxd в противном случае.

...