如何将PyCapsule转换为ctype?

时间:2017-02-03 17:17:56

标签: python-2.7 ctypes python-extensions

我正在尝试使用python c扩展。扩展用在一个包中,该包用扩展名注册python回调,然后扩展名调用它与python代码进行通信。

扩展有一个struct变量,我想在python代码中使用它。我已经成功地将C结构作为PyCapsule传递,我确实可以在我的python中得到它。但是现在我需要实际访问PyCapsule里面的数据,当然它不知道它持有什么(它只知道它有一个空*)。 我想知道我是否可以以某种方式使用囊内的void指针来创建与内存兼容的ctype。

我知道这不是最好的方法。我尝试创建一个新的PythonType,如下所述https://docs.python.org/3/extending/newtypes.html#generic-attribute-management 但是对于我的生活我无法编译,我一直在犯一个毫无意义的错误

expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘pybison’

错误行指向此struct实例化的第一行:

static PyModuleDef noddy2module = {
    PyModuleDef_HEAD_INIT,
    "noddy2",
    "Example module that creates an extension type.",
    -1,
    NULL, NULL, NULL, NULL, NULL
};

0 个答案:

没有答案