C.dll如何将变量暴露给Python?

时间:2017-05-26 01:22:43

标签: python c++ c dll ctypes

我正在尝试将C主程序写入dll,Python将从此dll导入所有内容(包括所有变量和函数),并运行dll中定义的函数。但是,我打算不仅将函数导出,而且还要将变量从DLL导出到Python。 我理解如何使用DLL向Python公开函数,但我不确定如何使用Python中的Ctype从dll访问变量。

我们举一个例子: 如果在标题内,我们有#DEFINE MAXDEVNUMBER 4。 当我使用ctype print mydll.MAXDENUMBER时,它给我一个错误。函数'MAXDENUM'未找到

Variables defined

enter image description here

1 个答案:

答案 0 :(得分:3)

您无法访问预处理器宏,因为它们不是从DLL导出的。您只能访问导出的C函数和全局变量。

例如, test.c

>>> from ctypes import *
>>> dll = CDLL('test')
>>> dll.func(1)
6
>>> x=c_int.in_dll(dll,'b')  # access the global variable
>>> x.value
5
>>> x.value = 6              # change it
>>> dll.func(1)
7
{{1}}