我有一个接受参数(const BOOL channels[])的C++函数,这是在C#中调用它时传递的变量:

bool[] achannel = new bool[16];
achannel[0] = true;

我想知道如何使用ctype将其转换为Python,以便从Python应用程序成功调用该函数.

我试过这个:

achannels = [None] * 16
achannels[0] = True

但最终会出现以下错误:

OSError: exception: access violation reading 0x0000000000000039

推荐答案

类型const BOOL channels[]的函数参数是pointerconst BOOL.您要传递的参数是指向布尔值的指针,而布尔值恰好是16个布尔值数组中的第一个元素.我将假设您的C++代码中的任何BOOL都与C99的S _Bool兼容,因此与c_types.bool兼容.

您可以将所需的参数构造为

arr_type = ctypes.c_bool * 16
achannels = arr_type(True, *[False]*15)

Python相关问答推荐

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

在Python Attrs包中,如何在field_Transformer函数中添加字段?

Pandas 都是(),但有一个门槛

如何制作10,000年及以后的日期时间对象?

如何在polars(pythonapi)中解构嵌套 struct ?

如何在WSL2中更新Python到最新版本(3.12.2)?

梯度下降:简化要素集的运行时间比原始要素集长

实现自定义QWidgets作为QTimeEdit的弹出窗口

使用NeuralProphet绘制置信区间时出错

不允许访问非IPM文件夹

如何在turtle中不使用write()来绘制填充字母(例如OEG)

在Python中使用if else或使用regex将二进制数据如111转换为001""

基于形状而非距离的两个numpy数组相似性

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

30个非DATETIME天内的累计金额

使用Python异步地持久跟踪用户输入

Python类型提示:对于一个可以迭代的变量,我应该使用什么?

仅使用预先计算的排序获取排序元素

如何在Airflow执行日期中保留日期并将时间转换为00:00

在MongoDB文档中仅返回数组字段