python - C.dll 如何向 Python 公开变量?

标签 python c++ c dll ctypes

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

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

Variables defined

enter image description here

最佳答案

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

例如,test.c:

__declspec(dllexport) int b = 5;

__declspec(dllexport) int func(int a)
{
    return a + b;
}
>>> 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

关于python - C.dll 如何向 Python 公开变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44192157/

相关文章:

python - 在 Python 中,有什么方法可以测试生成器对象以找出它是由哪个生成器创建的?

python - 图像未显示在 pygame 屏幕上

c++ - gtkmm、strncpy 中文本字段的意外行为

c++ - 哪个工具可以列出对 C 中特定变量的写入访问权限?

c - 为什么我的 fputc/fwrite 一直以十六进制打印以及如何打印到文件的中间?

python - 如何从网站中提取数据并将其保存到txt文件中

c++ - 如何在 C++ 模板类中为单个方法创建专门化?

c++ - 如何在二叉搜索树中将字符串和整数作为参数?

重新定义 C 宏

python - Python 中的 random.sample 和 random.shuffle 有什么区别