Unsigned short * argument called by reference - 在 python 中替代 Cython 代码

Unsigned short * argument called by reference - alternative in python for Cython code

我是 Python 的初学者。我目前正在使用 Cython 为一些 c 代码编写 python 包装器。

C 函数头是:

FunctionName (unsigned short *inputData, unsigned short *outputData) 

inputData/outputData 是函数中通过引用调用的 unsigned short 数组。


我尝试了以下包装器:

test.py

cdef extern from "Header.h":
void FunctionName (unsigned short *inputData, unsigned short *outputData)

def py_FunctionName(inputData, outputData)-> None :
FunctionName (inputData, outputData)

当我 运行 make:

时出现以下错误
  inputData,
       ^
Cannot convert Python object to 'unsigned short *'

 outputData,
       ^
Cannot convert Python object to 'unsigned short *'

我已经用 (unsigned char *) 和其他人尝试过相同的代码,并且编译得很好


我想知道解决这个问题的最佳方法。 即:编写一个 python 函数参数,它们是指向(等效于)unsigned short 类型数组的指针,并且可以在类似于 C 中的“通过引用”的代码中更改?

如果无法直接执行,python 中的有效解决方案是什么? 我目前正在使用 Python 3.8

谢谢。

我通过从 Cython 更改为 SWIG 解决了这个问题。 SWIG 以直接的方式在 Debian 上创建了“python 的 c 包装器”,并且没有任何错误地识别了所有数据类型。

我仍然不知道如何为 Cython 解决这个问题。但是 - 就我而言 - SWIG 完成了这项工作。