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 完成了这项工作。
我是 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 完成了这项工作。