如何在ctypes中强制转换为常量?

用户391339

我有一个C函数,在第三个输入pos中使用const双指针:

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

当我尝试使用双指针时:

pos = C.POINTER(C.c_double)
pos.value = 2.0

GCS_api.PI_MOV(controller_number, szAxis1, pos)

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

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

如何将pos(第三个参数)转换为所需的常量双指针?实际上,此函数在C ++ Visual Studio中可以用作普通的double型,因此不清楚为什么需要为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 double * constant,我想我会没事的...。

马克·托洛宁

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

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

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

d = (C.c_double*4)(1.1,2.2,3.3,4.4)  # Create double[4] array

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Go中强制转换为类型别名?

如何在C ++ 17中将强制转换函数指针静态转换为noexcept?

如何在Scala中强制转换变量?

如何在.tsx文件中强制转换?

如何在Pony中将值强制转换为String?

如何将ctypes转换为字节

如何防止Lazarus中的“ unicode常量强制转换而可能丢失数据”警告?

如何在角度2中将md ElementRef强制转换为HtmlElement

如何在结构内部强制转换为字段的枚举?

如何在没有parseFloat或强制转换的情况下将字符串转换为javascript中的float?

如何使C ++编译时间模板强制转换为常量?

如何将ctypes指针强制转换为Python类的实例

如何在tidyverse中将数据帧强制转换为向量

如何在模板实例化中强制将char []转换为char *?

如何在JavaScript中强制Date.parse()转换为本地时间和日期而不是UTC

如何在不强制转换为列表的情况下更改元组中的项目?

如何强制将readline()中的输入从字符转换为数字

在ctypes中强制转换bytearray实例

强制转换为ctypes.wintypes

如何在Swift中将NSValue pointerValue()强制转换为UIView?

如何在C#中从数据读取器强制转换为布尔布尔值?

如何在Groovy脚本中将null强制转换为0

如何在C中将char [n] [length + 1]强制转换为常量字符串数组?

如何在 Checkstyle 中强制枚举常量必须为大写?

如何在目标 c 中强制强制转换和转换数据类型

如何在编译时将常量浮点值转换为 4 个字节的十六进制常量值?

在Python中如何在转换为ctypes时引用函数字符串参数的值 c_wchar_p

将 uint 强制转换为在 GLSL 中浮动的常量表达式

如何将 JSON 文件中的值转换为常量?