Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用拆分定义的Cython编译_C_Pointers_Cython - Fatal编程技术网

使用拆分定义的Cython编译

使用拆分定义的Cython编译,c,pointers,cython,C,Pointers,Cython,我试图在pxd文件中声明Cython类,但在尝试分配指针时无法编译它 以下pyx编译良好: cdef class Foo: cdef void *_void cdef set_ptr(self, void *ptr): self._void = ptr 但当我根据以下公式将其拆分为两个文件时: .pxd cdef class Foo: cdef void *_void cdef set_ptr(self, void *ptr) .pyx cd

我试图在
pxd
文件中声明Cython类,但在尝试分配指针时无法编译它

以下
pyx
编译良好:

cdef class Foo:
    cdef void *_void

    cdef set_ptr(self, void *ptr):
        self._void = ptr
但当我根据以下公式将其拆分为两个文件时:
.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文件名与pyx文件名匹配吗?@DavidW谢谢您的建议。文件的名称确实相同,但问题来自
setup.py
中的lib名称,它与文件的名称不同