如何在 ctypes 中使用 typedef

2023-12-03

我正在尝试使用 ctypes 库在 Python 中包装 C 库。

我这样包装结构

file.c

typedef struct {
    int x;
    int y;
} Point;

file.py

import ctypes


class Point(ctypes.Structure):
    _fields_ = [("x": ctypes.c_int), ("y", ctypes.c_int)]

但我有这样的声明,无法找出如何包装它并获取类型MyFucntion.

typedef char* (*MyFunction)(char*);


Check [Python 3.Docs]:ctypes - Python 的外部函数库.

那是一个函数指针。你可以这样包装它:

FuncPtr = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_char), ctypes.POINTER(ctypes.c_char))

但这很大程度上取决于您将如何使用它。

作为旁注,typedef没有任何关系ctypes: 例如Point定义将是相同的,没有typedef (struct Point { ... };).

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

如何在 ctypes 中使用 typedef 的相关文章

  • 与正在运行的进程通信

    We have 基于Python的服务器 A 正在运行的命令行应用程序 在同一台 Linux 机器上 能够读取stdin 计算一些东西并将输出提供给stdout B 将输入从 A 发送到的最佳 最优雅 方式是什么 stdin B 的 并等待
  • 使用 MemoryCache 而不是普通的旧 Dictionary 的令人信服的理由是什么

    我刚刚遇到内存缓存 http msdn microsoft com en us library system runtime caching memorycache aspx这是 NET 4 中的新增功能 我知道如果你想的话它会很有用 限制
  • llvm clang 编译器上的dynamic_cast失败

    我看到一个奇怪的失败dynamic cast正在返回NULL在 clang 编译器上 但相同的代码可以在 gcc 环境下运行 您能否指出根本原因是什么 之间可能有什么区别dynamic cast关于 llvm 和 gcc 我正在使用两个编译
  • 静态成员函数中的封闭类的 C++ 类型

    我认为这是完全不可能的 但如果呢 在任何版本的 C 中 是否有可能以某种方式获取静态成员函数中封闭类的类型 class Impossible public static void Fun typedef Impossible Enclosi
  • 在多个线程中添加和删除时 List 中的 null 值

    我知道 C System Collections Generic List 对象不是线程安全的 但我想知道为什么这段代码会生成空值 Task Run gt for var i 0 i lt 10 i var str Test i list
  • WiX 安装程序在 vs 2012 上不起作用

    我想为我的应用程序创建一个安装程序 我已经下载了 WiX 3 6 并将其安装在 vs 2012 上 创建简单的winform应用程序 将 WiX 安装项目添加到我的解决方案中 右键单击参考并将我的 winform 应用程序添加到安装程序的参
  • TensorFlow 的 Print 或 K.print_tensor 不会在损失函数中打印中间张量

    我为 Keras 模型编写了一个相当复杂的损失函数 并且它不断返回nan训练时 因此 我需要在训练时打印中间张量 我知道你不能在损失函数中执行 K eval 因为张量未初始化 不过 我都尝试过K print tensor and tf Pr
  • COM Interop 挂起会冻结整个 COM 系统。如何取消COM调用

    我正在使用通过 COM Interop 包装器公开的第三方 dll 然而 其中一个 COM 调用经常冻结 至少不会返回 为了至少让我的代码更加健壮 我异步包装了调用 getDeviceInfoWaiter is a ManualResetE
  • 作为服务运行时,URLDownloadToFile() 将对象写入缓存中

    我有一个软件 可以将图像下载到工作目录中 然后对其进行处理以创建视频 之后 这些文件将被独立脚本删除 问题是它还将文件写入以下目录 该软件作为系统服务运行 C Windows SysWOW64 config systemprofile Ap
  • 如何打开 Outlook 已接收和阅读电子邮件

    我们有 5 个人 使用同一封电子邮件通过 Outlook 回复客户 我想设计一个程序来打开所有已发送的电子邮件 阅读它们 打开它们 找到第一个人的签名 并在他 她的计数器中添加一个数字 以便我可以得出一些统计数据 关于如何打开 Outloo
  • django 返回记录的最近日期

    我正在尝试从用户的多个记录中返回最近的日期 当用户创建文档时 创建日期存储在 CreatedDocumentDetails 模型中 我无法返回用户最近创建的文档的日期 我问这个关于SO的问题 https stackoverflow com
  • Python 子进程在发出 HTTP 请求时无提示崩溃

    我在组合多处理 请求 或 urllib2 和 nltk 时遇到问题 这是一个非常简单的代码 gt gt gt from multiprocessing import Process gt gt gt import requests gt g
  • 成员函数的Decltype

    class A int f int x int j return 2 decltype f p 给我错误 error decltype cannot resolve address of overloaded function 我不明白为什
  • Cmake:在自定义目录中查找 protobuf 包

    我有 cmake 3 10 x 并下载了当前的 protobuf 源 3 6 1 使用 cmake 我创建了 bin 目录 PROTOBUF SOURCE DIR bin 在其中成功构建了该库 下一步我想在我的基于 cmake 的项目中使用
  • 聚类算法采用哪种编程结构

    我正在尝试实现以下 分裂 聚类算法 下面是该算法的简短形式 完整的描述可用here https dl dropboxusercontent com u 540963 diana pdf 从样本 x i 1 n 开始 将其视为由 n 个数据点
  • 如何在 C 中将 int 和数组保存在共享内存中?

    我正在尝试编写一个程序 让子进程在 Linux 上相互通信 这些进程都是从同一个程序创建的 因此它们共享代码 我需要它们能够访问两个整数变量以及一个整数数组 我不知道共享内存是如何工作的 我搜索过的每一个资源除了让我困惑之外什么也没做 任何
  • 在 django 中运行普通 sql 查询时如何获取字段名称

    在我的 django 视图之一中 我使用纯 sql 不是 orm 查询数据库并返回结果 sql select from foo bar cursor connection cursor cursor execute sql rows cur
  • Flask 从线程中删除会话变量

    我尝试实施投票系统 它的工作原理是这样的 如果用户对帖子进行投票 我会在会话变量中记录其临时状态 已投票 已加星标等 如果当前用户在我将结果保存到临时表之前尚未投票 用户可以在 5 分钟内更改投票 5 分钟后 结果将使用线程永久写入数据库
  • numpy.genfromtxt 生成看起来像元组的数组,而不是二维数组 - 为什么?

    我在跑genfromtxt像下面这样 date conv lambda x str x replace time conv lambda x str x a np genfromtxt input txt delimiter skip he
  • Pylance 无法在 VSCode Jupyter 笔记本中工作

    皮兰斯工作于 py files 但不适用于 Jupyter ipynb笔记本 我尝试保存 ipynb 同样的问题 如何在我的笔记本中启用 Pylance 警告 Jupyter 扩展似乎不支持 Pylance 我提交这个问题就是为了解决这个缺

随机推荐

  • SQL 挑战/难题:给定堆栈跟踪 - 如何找到每个时间点的顶部元素?

    我现实生活中的用例是合并嵌套范围 我画了一些草图 然后我看到了堆栈 PUSH 和 POP 操作的开始和结束范围之间的相似之处 我明白解决了这个问题也就解决了原来的问题 The op实际上可以从问题中删除列 当 val 为 NULL 时 则为
  • 怎么了?(NumberFormatException:null)

    import java io class AccountInfo private String lastName private String firstName private int age private float accountB
  • Nginx 变量类似于 Apache 中的 SetEnv?

    我在 Apache 中使用 SetEnv 在虚拟主机中设置一些变量 然后在 PHP 中使用这些变量进行恢复 SERVER the variable 现在我正在切换到Perl Catalyst和Nginx 但Nginx中的 env 指令似乎不
  • 我无法将子菜单项设置为已选中

    我正在为我的抽屉使用 NavigationView 这是 menus xml 文件 它定义了抽屉的所有菜单项 menu menu
  • 詹金斯看不到映射的驱动器

    尝试在 Jenkins 中执行构建时出现以下错误 Started by user anonymous Building in workspace C Users mryan git AML AML cmd c call C Users MR
  • JSP生成Excel电子表格(XLS)下载

    我正在 JSP 中开发这个应用程序 我希望以 XLS MS Excel 格式 从数据库中导出一些数据 在tomcat下是否可以像普通Java应用程序一样编写一个文件 然后生成到该文件的链接 或者我需要使用特定的 API 吗 这样做时会遇到权
  • 如何在 Tkinter 中播放视频文件?

    有没有办法播放视频文件AVI MP4 etc 我尝试使用PyMedia 但显然它只适用于Pygame 我的问题的解决方案是什么 你可以使用python gstreamer用于播放视频 这适用于 Linux 上的我 但也应该适用于 Windo
  • 将 stdout 和 stderr 重定向到文件,并将 stderr 重定向到 stdout

    以下代码将 stdout 写入日志文件并打印 stderr bash script sh gt gt out log 这再次将 stdout 和 stderr 写入日志文件 bash script sh gt gt out log 2 gt
  • SquirreL SQL 客户端 3.7.1 上的 PL/SQL

    我试图在 SQuirrel 上执行 PL SQL 脚本 但似乎不起作用 我通过在 额外类路径 上添加 ojdbc7 jar 来配置 Oracle Thin Driver 能够连接到数据库 但当尝试运行简单代码时 会出现错误 code BEG
  • 如何在 pyGTK 中搜索 gtk.ListStore 并删除元素?

    我有以下代码 其中 store 是gtk ListStore效价是gtk TreeIter 文档说如果没有下一行 iter next 将返回None 因此找到时中断 它应该通过搜索ListStore of int str 并删除其中的一项i
  • 每行对齐 2 个 DIV,高度相同

    我们遇到一个问题 我们需要一个包含动态内容的 div 列表 每行始终有 2 个 div 这两个元素应该具有相同的高度 目前我们有一个使用 JavaScript 设置框高度的解决方案 但它的性能不是很好 因为它会在每次调整大小时重新计算尺寸
  • 按结构中的变量对结构向量进行排序? [复制]

    这个问题在这里已经有答案了 我有一个数据结构 例如 struct Data string firstname string lastname string age 我已将每个结构放置在一个向量 VectorOfData 中 是否可以循环遍历
  • 如何在自定义引导程序应用程序中设置或获取所有日志

    在我的自定义 Burn 托管引导程序应用程序中 我希望有一种方法来设置安装程序的默认日志目录 以便客户可以轻松找到安装日志 如果无法做到这一点 我想要一种合适的方法来在安装后复制日志文件 我尝试在我的安装项目 即 Bundle wxs 和我
  • 添加构建后事件而不覆盖现有事件

    我有一个 Powershell 脚本 由我的 NuGet 包运行 它将生成后事件添加到用户的 Visual Studio 项目中 project Properties where Name eq PostBuildEvent foreach
  • PHP PDO bindParam() 和 MySQL BIT

    我正在尝试更新其中包含 BIT 类型值的表中的数据 如下所示 show contact is either 1 or 0 query gt bindValue scontact show contact PDO PARAM INT 问题是
  • 测试固件

    这遵循几个other 问题 但我认为我已经更好地完善了我的问题 我想在安装设备之前测试我的固件代码 我意识到很多人编写代码 上传 测试等 但我真的想在上传之前编写和测试 主要是因为我想自动化许多场景 那么 最好的方法是什么 如果我正在编写纯
  • JavaScript 过滤图像颜色

    嘿 我正在寻找一种拍摄黑白照片的方法img元素 并使用 JavaScript 指定 RGB 值 以便图像变成该颜色 有什么想法 除了图书馆 我也尝试只用 IE 来做到这一点 我只在 IE 中这样做的原因是因为我正在制作一个小的侧边栏小工具
  • 使用 Three.js 创建凹半球

    我是一名具有良好 JavaScript 经验的 Web 开发人员 目前正在探索Three js的可能性 然而 我对 3D 形状和词汇不是很熟悉 我不知道如何构建我需要的形状 我想创建一个半球体 并且能够投影视频inside这个球体 我有一个
  • 移动太慢时 jquery mouseleave 问题

    我正在使用 jQuery mouseenter 和 mouseleave 事件来上下滑动 div 除了 mouseleave 之外 一切都运行良好 只有当鼠标从 div 上移开的速度相当慢时 它才不会触发 如果我以相对正常或较快的速度移动鼠
  • 如何在 ctypes 中使用 typedef

    我正在尝试使用 ctypes 库在 Python 中包装 C 库 我这样包装结构 file c typedef struct int x int y Point file py import ctypes class Point ctype