如何转换为ctypes中的常量?

2024-05-15 05:34:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个C函数,它在第三个输入位置接受一个常量双指针:

PI_MOV(int ID, const char* szAxes, const double* pdValueArray)

当我尝试使用双指针时:

^{pr2}$

我得到位置3的参数类型错误:

ctypes.ArgumentError: argument 3: <type 'exceptions.TypeError'>: Don't know how to convert parameter 3

如何将第三个参数pos转换成所需的常量双指针?这个函数实际上是C++ VisualStudio中的一个普通的旧的双,所以不太清楚为什么需要是一个const double *。有什么建议吗?在

我试图指定函数的参数类型:

GCS_api.PI_MOV.argtypes = [C.c_int, C.POINTER(C.c_char), C.POINTER(C.c_double)]

但这也给出了一个错误:

ctypes.ArgumentError: argument 3: <type 'exceptions.TypeError'>: expected LP_c_double instance instead of _ctypes.PyCPointerType

如果我坚持原稿,通过ctypes双*常量,我想我可以。。。。在


Tags: 函数类型参数错误piargumentctypesint
1条回答
网友
1楼 · 发布于 2024-05-15 05:34:42

pos = C.POINTER(C.c_double)创建一个类型。您需要一个c_double的实例,并将地址传递给函数:

d = C.c_double(2.0)
GCS_api.PI_MOV(controller_number, szAxis1, C.byref(d))

由于函数可能需要一个双精度数组,因此其语法如下:

^{pr2}$

相关问题 更多 >

    热门问题