我有一个简单的python脚本,它使用ctypes将数组指针传递给外部函数。然后,外部函数只需将同一个数组传递回python(这是一个简单的单元测试,以确保python和外部函数都使用相同的值)。函数原型如下所示:
void Array_tmp(int32_t Array[], int32_t *len, int32_t Array2[])
python脚本如下所示:
^{pr2}$脚本的输出如下所示:
<numpy.ctypeslib.c_long_Array_5 object at 0x044A7AD0>
[0 2 3 4 5]
为什么数组的第一个元素显示为零而不是一,而其他元素都是正确的?在
编辑:将c_arr_ptr = cast(c_arr, POINTER(c_double))
更改为c_arr_ptr = cast(c_arr, POINTER(c_int32))
对输出没有任何影响,除了可能稍微改变内存地址。在
这里的代码有很多问题。下面是一个有效的例子:
测试c
测试.py
^{pr2}$输出:
相关问题 更多 >
编程相关推荐