我正在使用 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”。所以我的问题是:
- 是否可以从共享库的枚举定义中提取数值 - 或者当编译器完成时整个枚举概念“掉在地上”?
- 如果共享库中存在枚举值 - 如何从 Python/ctypes 访问它们?
枚举定义不会导出,因此您当前的解决方案是唯一可用的。
无论如何,C 枚举值只不过是整数常量。 C 端没有类型安全,您可以将任何整数值传递给枚举参数。所以无论如何,C 编译器并没有做太多事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)