如何返回指向ctypes结构体的指针?

2023-11-26

我尝试将一个结构指针传递给函数“bar”作为函数“foo_write”的返回值。但我收到行“foo = POINTER(temp_foo)”的错误消息“TypeError:必须是 ctypes 类型”。在里面ctypes在线帮助我发现“ctypes.POINTER”仅适用于 ctypes 类型。你知道另一种方法吗?你会推荐什么?

C:

typedef struct FOO_{
    int i;
    float *b1;
    float (*w1)[];
}FOO;

foo *bar(int foo_parameter) {...
void foo_write(FOO *foo)

Python 与 ctypes:

class foo(Structure):
    _fields_=[("i",c_int),
              ("b1",POINTER(c_int)),
              ("w1",POINTER(c_float))]

temp_foo=foo(0,None,None)
foo = POINTER(temp_foo)
foo=myclib.bar(foo_parameter)
myclib.foo_write(foo)

Change

foo = POINTER(temp_foo)

to

foo = pointer(temp_foo)

可以解决问题。

请参见http://docs.python.org/library/ctypes.html#ctypes-pointers了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何返回指向ctypes结构体的指针? 的相关文章

随机推荐

  • 为什么WeakHashMap在GC后对值保持强引用?

    WeakHashMap 中的关键对象变得弱可达 并且map应该在GC之后删除该条目 但对值对象的强引用仍然存在 为什么 使用番石榴弱键映射观察到相同的行为 预期输出 refKey get null refValue get null 但我得
  • 在键盘上显示带有按钮的 UIView,如 Skype、Viber 即时通讯工具(Swift、iOS)

    我想创建附件视图 将其放置在输入附件视图下 通过键盘 就像在 Skype 应用程序或 Viber 中一样 我已经问过这样的问题了here 但是这个问题的建议解决方案并不是那么优雅 因为当我将滚动视图拖动到顶部时 我希望我的附件 UIView
  • DLL 文件到底是什么?它们如何工作?

    DLL 文件到底是如何工作的 它们似乎有很多 但我不知道它们是什么或它们如何工作 那么 他们有什么关系呢 什么是DLL 动态链接库 DLL 类似于 EXE 但它们不能直接执行 它们类似于 Linux Unix 中的 so 文件 也就是说DL
  • Spring文件混合形式上传

    我想将文件上传到我的 spring 3 0 应用程序 使用 roo 创建 我已经拥有以下实体 Entity RooJavaBean RooToString RooEntity public class SelniumFile ManyToO
  • 与“ws://localhost:3000/”的 WebSocket 连接失败:连接在收到握手响应之前关闭

    我选择了朋友制作的一款游戏 希望通过使用 WebRTC 和 websocket 在对等点之间发送按键数据 使其可以跨浏览器玩 但是 我在控制台中收到此错误 与 ws localhost 3000 的 WebSocket 连接失败 连接在收到
  • Scala 在解析隐式类型时如何使用显式类型?

    我有以下代码 它使用 Spray json 将一些 JSON 反序列化为案例类 通过parseJson方法 根据隐式 JsonFormat MyCaseClass 的定义位置 内联或从伴生对象导入 以及定义时是否提供显式类型 代码可能无法编
  • 无堆栈语言如何工作?

    我听说过无堆栈语言 但是我不知道如何实现这样的语言 有人可以解释一下吗 我们拥有的现代操作系统 Windows Linux 采用我所说的 大堆栈模型 运行 有时 这种模型是错误的 并且激发了对 无堆栈 语言的需求 大堆栈模型 假设编译的程序
  • 如何使用 Koush AndroidAsync 关闭/重试/管理 WebSocket?

    我正在使用 Koush 的 AndroidAsync 作为 WebSocket 客户端 我的代码遵循以下示例https github com koush AndroidAsync并有效 示例复制如下 我需要我的应用程序在启动时打开一个 we
  • 从内存加载.so文件[重复]

    这个问题在这里已经有答案了 可能的重复 从内存中打开 我在 Windows 的 DLL 文件中看到过这种情况 从内存缓冲区加载 但在 Linux 中我找不到它 而且 ld 源代码是我见过的最复杂的代码 所以 有从内存加载 so 文件的示例吗
  • 指针参数和数组参数有区别吗?

    void method double v void method double v 5 这两者有什么区别吗 第二个是否更具体 如v长度限制为 5 个元素 当数组被声明为参数类型时 会退化为指针类型 在你的例子中 void method do
  • 查询两个不同表中两个字段的 SUM

    我正在尝试确定如何在两个表之间求和字段 在表 1 中 我们简称为 gegevens 例如 我会使用 gegevenID vertrekdatum prijs 在表 2 中 我们将其称为费用 例如 feeID gegevenID 金额 我想根
  • Gradle 构建时在 APK META-INF 中复制的重复文件

    我一直在环顾四周一些答案在这里发布了有关此错误的信息 但没有运气 我希望得到一些有关正在发生的事情的澄清 我的错误如下 错误 任务 app transformResourcesWithMergeJavaResForDebug 执行失败 co
  • 如何通过角度2中的Router.navigate传递RouteData

    agnular2 中是否有一个 api 允许传递 json 对象而不是字符串值 例如 在Router navigate 我可以传递路由参数 Router navigate routename key stringvalue 并可以使用检索它
  • ic_sync_black_24dp.xml 的 android.content.res.Resources$NotFoundException

    我已经为此苦苦挣扎了一个多星期 因为我认为这一定与我的环境有关 但我无法缩小范围 我启动一个空项目 添加一个 空白 活动并接受所有默认值 项目完成设置后 我添加一个 设置 活动 在 MainActivity java 中 我添加两行代码来连
  • Qt5内存泄漏?如何删除QMimeData?

    我刚刚提供了一个答案this问题并想提供一个工作示例 当我注意到新创建的QMimeData返回的实例QListModel mimeData 在应用程序终止之前不会被删除 所以这不是一个real由于 Qt 处理所有内存泄漏QMimeData关
  • 如何在 Android 模拟器上模拟硬件媒体控制按钮

    Android 支持耳机和连接设备上的硬件播放 暂停按钮 我正在尝试找到一种方法来测试模拟器上对这些设备的支持 这安卓文档讨论如何添加对硬件播放控件的支持 但不幸的是 我找不到有关如何模拟它们的文档 谢谢 您可以使用 adb 发送按键事件
  • 如何使用 d3.js 计算给定 x 的 y 值

    我定义了一个线生成器d3 js如下 var line d3 svg line interpolate monotone x function d return x d date y function d return y0 d visits
  • 更新 Java HashMap 键

    我只是想知道 如果 a 的 key 会发生什么HashMap是可变的 下面的测试程序证明了这一点 我无法理解何时两者都等于并且hashCode方法返回 true 和相同的值 为什么hashmap containsKey return fal
  • Init方法继承

    如果我有带有 init 方法的抽象类 A abstract class A init println Hello 然后扩展 A 的 B 类 class B A 如果我像这样实例化 B fun main args Array
  • 如何返回指向ctypes结构体的指针?

    我尝试将一个结构指针传递给函数 bar 作为函数 foo write 的返回值 但我收到行 foo POINTER temp foo 的错误消息 TypeError 必须是 ctypes 类型 在里面ctypes在线帮助我发现 ctypes