首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cython -试图访问指向struct的指针的内容时出错

Cython -试图访问指向struct的指针的内容时出错
EN

Stack Overflow用户
提问于 2015-03-11 23:46:01
回答 1查看 376关注 0票数 2

我在Cython中有一个cdefed类,它看起来非常类似于以下内容:

代码语言:javascript
复制
cdef class AprilTagDetector:
    cdef capriltag.apriltag_detector_t* _apriltag_detector

    def __cinit__(self):
        self._apriltag_detector = capriltag.apriltag_detector_create();
        # standard null checks
    # standard __dealloc__(self) here

    property quad_decimate:
        def __get__(self):
            return self._apriltag_detector.quad_decimate

相应的.pxd文件如下所示:

代码语言:javascript
复制
cdef extern from "apriltag.h":
    # The detector itself
    ctypedef struct apriltag_detector_t:
        pass

    # Detector constructor and destructor
    apriltag_detector_t* apriltag_detector_create()
    void apriltag_detector_destroy(apriltag_detector_t* td);

问题是,当我编译这段代码时,它会弹出以下错误:

代码语言:javascript
复制
property quad_decimate:
    def __get__(self):
        return self._apriltag_detector.quad_decimate             ^
------------------------------------------------------------

apriltags.pyx:47:14: Cannot convert 'apriltag_detector_t *' to Python object

这里发生了什么事?我还无法从Cython文档中找到它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-14 16:32:08

谢天谢地,当我和一个朋友在黑客空间做这个项目时,我发现了这个问题。问题在ctypedef struct apriltag_detector_t块中。当我在块中编写pass时,我认为Cython会自动计算出结构的内部内容,并允许我访问所需的元素--这里是quad_decimate

事实并非如此。要让Cython理解结构的内容,必须将结构中的内容告诉它如下:

代码语言:javascript
复制
ctypedef struct apriltag_detector_t:
    float quad_decimate
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28999518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档