从共享库获取枚举定义

2023-11-23

我正在使用 ctypes 访问用 C 编写的共享库。共享库的 C 源代码包含一个枚举,例如

enum {
   invalid = 0,
   type1   = 1,
   type2   = 2
} type_enum;

在Python方面,我打算只为各种枚举值定义整数常量,例如:

INVALID = 0
TYPE1 = 1
TYPE2 = 2  

然后在调用 C 函数的 Python 代码中使用这些数字“常量”。这似乎工作正常,但是我会strongly更喜欢直接从共享库获取枚举的数值(内省?);然而使用例如nm 在共享库上它似乎不包含任何符号“invalid”、“type1”或“type2”。所以我的问题是:

  1. 是否可以从共享库的枚举定义中提取数值 - 或者当编译器完成时整个枚举概念“掉在地上”?
  2. 如果共享库中存在枚举值 - 如何从 Python/ctypes 访问它们?

枚举定义不会导出,因此您当前的解决方案是唯一可用的。

无论如何,C 枚举值只不过是整数常量。 C 端没有类型安全,您可以将任何整数值传递给枚举参数。所以无论如何,C 编译器并没有做太多事情。

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

从共享库获取枚举定义 的相关文章

  • Kivy TextInput 水平和垂直对齐(文本居中)

    如何在 Kivy 的 TextInput 中水平居中文本 I have the following screen But I want to centralize my text like this 这是我的 kv 语言的一部分 BoxLa
  • 将 str.contains 映射到 pandas DataFrame

    python 初学者 我正在寻找创建字符串的字典映射以及关联的值 我有一个数据框 想要创建一个新列 如果字符串匹配 则会将该列标记为 x df pd DataFrame comp dell notebook dell notebook S3
  • Type_traits *_v 变量模板实用程序顺序无法编译

    看过了这个答案 https stackoverflow com a 31763111 7151494 我试图想出一个变量模板从中获取代码的实用程序 template
  • 我们应该使用 Eval 还是 Databind 事件?

    当使用 Asp Net 并使用 ListView 等控件创建网站时 使用 Eval 命令是一个好习惯吗 还是应该在 databind 事件中填充文字和数据 取决于您是否想在更新事件上写回数据 在这种情况下数据绑定 如果您只想读取该数据 可以
  • C++ 析构函数:何时释放内存?

    如果我删除一个导致其析构函数被调用的对象 那么内存是在析构函数完成函数中的任何操作之前还是之后被释放 仅当最小派生类子对象被销毁后才会释放内存 所以如果你有 class Base class Derived public Base publ
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • 基于 C++ 范围的 for 循环

    尝试使用基于范围的 for 循环执行某些操作 可以使用常规的 for 循环来完成 如下所示 vector
  • 如何将 django ModelForm 字段显示为不可编辑

    接受我的初步教训django ModelForm 我想让用户能够编辑博客中的条目 BlogEntry has a date postedTime title and content 我想向用户展示一个编辑表单 其中显示所有这些字段 但仅包含
  • 如何使用 C# 代码使用超链接的 onClick 事件?

    我正在尝试为页面中的超链接添加条件 而不是仅仅使用特定的链接 例如 a href help Tutorial html Tutorial a 我想为不同的用户显示不同的页面 例如 如果用户以管理员身份登录 他们将看到与普通用户不同的链接 我
  • 在 C# 中生成随机值

    如何使用以下命令生成随机 Int64 和 UInt64 值RandomC 中的类 这应该可以解决问题 这是一个扩展方法 因此您可以像调用普通方法一样调用它Next or NextDouble上的方法Random目的 public stati
  • IEnumerable.比带中断的 for 循环更快吗?

    我们的代码打开表单时遇到了一些缓慢的情况 这可能是由于for循环与break这需要很长时间才能执行 我把它切换到IEnumerable Any 并看到表格很快打开 我现在试图弄清楚是否单独进行此更改会提高性能 或者是否正在访问Product
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中
  • fscanf 和 EOF 中的否定扫描集

    我的文件中有一个以逗号分隔的字符串列表 姓名 1 姓名 2 姓名 3 我想跳过所有逗号来阅读这些名字 我写了以下循环 while true if fscanf file my string 1 break 然而 它总是比预期多执行一次 给定
  • 停止 TcpListener 的正确方法

    我目前正在使用 TcpListener 来处理传入连接 每个连接都有一个线程用于处理通信 然后关闭该单个连接 代码如下 TcpListener listener new TcpListener IPAddress Any Port Syst
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue
  • 检索 Autofac 容器以解析服务

    在 C WindowForms 应用程序中 我启动一个 OWIN WebApp 它创建另一个类 Erp 的单例实例 public partial class Engine Form const string url http 8080 49
  • 尝试 numba 时出现巨大错误

    我在使用 numba 时遇到了大量错误 讽刺的是 正确的结果是在错误之后打印的 我正在使用最新的 Anaconda python 并安装了 numba conda install numba 一次在 Ubuntu 13 64 位和 anac
  • 网页执行回发时如何停止在注册表单上?

    我正在做我的最后一年的项目 其中 我在一页上有登录和注册表单 WebForm 当用户点击锚点时Sign Up下拉菜单ddlType 隐藏 和文本框 txtCustName txtEmail and txtConfirmPassword 显示
  • 如何仅读取 CSV 文件每行的第一列 [重复]

    这个问题在这里已经有答案了 如何在Python中读取CSV文件每行的第一列 我的数据是这样的 1 abc 2 bcd 3 cde 我只需要循环第一列的值 另外 当我在 calc 中打开 csv 文件时 每行中的数据都在同一个单元格中 这正常
  • 如何在不同的目录中执行python脚本?

    Solved对于可能觉得这有帮助的人 请参阅下面我的答案 我有两个脚本 a py 和 b py 在我当前的目录 C Users MyName Desktop MAIN 中 我运行 gt python a py 第一个脚本 a py 在我当前

随机推荐

  • Android 搜索:使用 FTS 表以及普通 SQLite DB 表

    这更多的是一个设计问题 而不仅仅是一个编码问题 我已经有一个将数据存储在 SQLite DB 表中的应用程序 现在我想添加搜索功能 据我了解 为了启用搜索功能 我需要 FTS 表 我拥有的表格是 不完全相同 但给出了非常相似的示例 内容表
  • Android 音频:改变音调

    SoundPool 的 Android 文档称 该应用程序还可以通过实时调整多普勒或合成效果的播放速率来改变音调 所以我尝试这样做 使用 setRate 方法从一个音符平滑地变化到另一个音符 但结果很糟糕 声音变化非常参差不齐 这是我尝试过
  • MySQL 使用 CONCAT 条件进行选择

    我正在尝试在脑海中编译它 我有一个包含名字和姓氏字段的表 我有一个像 Bob Jones 或 Bob Michael Jones 这样的字符串以及其他几个字符串 问题是 例如我有 鲍勃的名字 以及 迈克尔 琼斯的姓氏 所以我想 SELECT
  • Java流是否有相当于带有变量赋值的while

    是否存在与以下内容等效的流 List
  • Tensorflow 从元图中打印所有占位符变量名称

    我有一个张量流模型 其中有 meta 和检查点文件 我试图打印模型所需的所有占位符 而不查看构建模型的代码 以便我可以在不知道模型是如何创建的情况下构建输入 feed dict 作为参考 这里是模型构建代码 在另一个文件中 def save
  • 优秀的 setjmp/longjmp 教程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 你好 我想阅读有关 C 语言 setjmp longjmp 的优秀教程 如果有真实的而不是人造的示例 那就更好了 Thanks 这并不是一个真正的教程 而是libpng 文档描述该库
  • 应用程序更新后共享首选项丢失

    我一整天都在研究这个问题 以下是要点 共享首选项should当用户更新应用程序时保持持久性 就我而言 更新应用程序后 它们丢失了 这个问题每次都会重现 我从 Play 商店安装旧的 APK 然后adb install r new apk使用
  • 色彩校正 MP4/Webm 视频

    我有一个大型视频 其中一些动画对于其他嵌入方法 gif png 序列等 来说太复杂 太长 并且我们遇到了视频中颜色的问题 本质上 我们将网页背景作为视频的一部分 以防止视频播放时出现任何边缘 我们正在尝试使视频上的渐变背景与网页上的渐变背景
  • Jenkins 的 Github 插件获取提交者和作者姓名

    如果我理解得很好 git 插件会将提交者和作者的姓名以及电子邮件暴露给环境变量GIT AUTHOR NAME GIT COMMITTER NAME GIT AUTHOR EMAIL and GIT COMMITTER EMAIL基于git的
  • Netbeans 等待连接到 XDEBUG

    Netbeans 不会连接到 xdebug 我尝试过以下帖子中的建议 调试 IDE 与 XDebug 的端口连接 等待连接 netbeans 显示 正在等待连接 netbeans xdebug 但这并不能解决我的问题 Netbeans 似乎
  • 带分隔符的 Android 列表视图

    我想创建一个带有分隔符的列表视图 就像在默认联系人应用程序中一样 我的应用程序需要对列表进行排序 并用分隔符分隔项目 如联系人应用程序中的字母顺序排序 能够使用分隔符标题进行滚动将是一个额外的优势 任何指示都会有帮助 谢谢 看看这个开源项目
  • 为什么 numpy.dtype('float64') 很特别?

    有人可以解释以下脚本输出背后的逻辑吗 import numpy if numpy dtype numpy float64 None print Surprise 谢谢 看起来像是一场不幸的事故 有人决定dtype None 将 默认 浮动
  • 如何创建可重用的表单 Vue 组件

    假设我想创建一个联系表单 在此联系表单中 用户可以有多个地址 我认为这是使用 Vue 组件的绝佳机会 这样我就不必创建冗余的地址表单字段 然后我就可以在网站的不同区域使用这个组件 比如编辑 创建等 我将如何创建一个父级可以使用的表单组件 并
  • 将参数传递给 Dart Polymer 元素

    我能找到的 Dart Polymer 的唯一可靠示例不使用任何参数 如何将参数传递给模板 是通过构造函数完成的吗 我的具体示例是 我有一个带有标题的卡片元素 我想将卡片的标题作为字符串传递给该元素 我看过将数据传递给 Polymer 元素
  • 使用 CLASP 测试 GAS 时如何模拟依赖关系

    背景 我最近了解到CLASP并对使用的可能性感到兴奋TDD编辑我的谷歌应用脚 本 天然气 本地 NOTE 可能有一种方法可以使用现有的 GAS 编辑器编写测试 但如果可能的话 我更愿意使用现代编辑器 clasp 效果很好 但我无法弄清楚如何
  • 谷歌图表时间线水平滚动

    我有一个时间线图表 与本页的第一个示例非常相似 https developers google com chart interactive docs gallery timeline 我在 Y 轴上有活动 做午餐 吃饭 等等 在 X 轴上我
  • 使用 Django ORM 处理大量大记录

    我有一个包含大约 30k 记录的表 我正在尝试使用 Django 的 ORM 对其进行迭代和处理 每条记录存储几个二进制 blob 每个二进制 blob 的大小可以是几 MB 我需要对其进行处理并将其写入文件 然而 由于内存限制 我在使用
  • 在C中显示颜色数组[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我的程序既写入又读取颜色数组 如下所示 struct Image size t width size t height struct Color data struct Color c
  • 将非 ASCII 字符输入到 scanf("%s")

    有没有一种方法可以向使用的 scanf 发出非 ascii 十六进制字符 s 我正在尝试插入十六进制字符 例如 x08 xDE xAD等等 以演示缓冲区溢出 输入不是命令行参数 而是程序内的 scanf 我假设您想在标准输入上提供任意数据
  • 从共享库获取枚举定义

    我正在使用 ctypes 访问用 C 编写的共享库 共享库的 C 源代码包含一个枚举 例如 enum invalid 0 type1 1 type2 2 type enum 在Python方面 我打算只为各种枚举值定义整数常量 例如 INV