我正在编写用于Python的Cython扩展。

我有这个Cython声明.pxd文件,该文件声明在其他C头文件中定义的C结构:

# Cython definitions for parameters.h
cdef extern from "parameters.h":
    ctypedef struct control_par:
        int num_cams
        # some other struct fields....


现在,我想对其他头文件执行相同的操作,但是在这里,我将不得不使用上面已经定义的内容:另一个Cython control_par文件中的.pxd C结构:

from optv cimport parameters, calibration # no error here during setup
cdef extern from "optv/trafo.h":
    void pixel_to_metric(# some other parameters...
                         control_par * parameters);


在cythonize过程中,我得到这个错误:


  'control_par'不是类型标识符


就像根本没有定义。

我究竟做错了什么?

最佳答案

导入C定义的正确方法是parameters.control_par。我会做:

from optv.parameters cimport control_par, whatever_else_you_need

关于python - 从其他Cython声明文件导入extern声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35259468/

10-13 08:21