我从第三方 DLL 加载了一个函数。我已经成功访问了作为库入口点的函数ctypes.windll.LoadLibrary
。该函数有 30 个参数,包括许多二维数组。函数原型指定在大多数情况下通过引用传递参数。当我进行函数调用时,我得到一个返回代码,表明内部变量存在问题,这让我认为我传递了错误的指针。(含糊不清。)我的问题是,在什么情况下我应该使用ctypes.byref
作为参考传递。例如,假设我有以下内容:
double_matrix = (ctypes.c_double * 100) * 100
my_array = double_matrix()
我应该传递 my_array 还是 ctypes.byref(my_array)?
my_string = ctypes.create_string_buffer("Hello world!")
使用 types.create_string_buffer() 创建的对象呢?如果需要通过引用传递,我应该传递 my_string 还是 ctypes.byref(my_string) ?
编辑:
我没有 DLL 的代码。
函数原型看起来基本上是这样的,只是每种类型大约有 5 或 6 个。
int process(char *input, int 指标, double (*dmatrix)[100][100], int (*groups)[100]);
谢谢