使用ctypes从DLL导入#define、常量和typedef

4 投票
2 回答
2540 浏览
提问于 2025-04-17 23:43

我有一个从我买的开发板上得到的DLL文件,这个文件里定义了一些函数、常量和类型。我已经成功地用ctypes把它导入到Python里了。不过,从这个导入中,我无法访问到那些定义的常量。比如说,如果我需要调用一个函数:

myDLL = ctypes.cdll.LoadLibrary("path/to/dll/parrot.dll")

spam = myDll.eggs(THIS_CONSTANT) #THIS_CONSTANT is defined in the DLL

那么我就不能这样做。有没有办法能让我访问这些常量呢?

2 个回答

0

你需要把头文件转换成相应的Python ctypes代码。这可以手动完成,或者你也可以使用一些工具来自动化部分或全部的转换过程。

2

#define 这些东西在动态链接库(DLL)里是根本无法访问的。实际上,它们的定义是在编译器开始工作之前,就已经被预处理器处理过了。所以,DLL 根本无法记住它们是以什么名字定义的。

撰写回答