使用 Python 通过指针访问 DLL 函数

Posted

技术标签:

【中文标题】使用 Python 通过指针访问 DLL 函数【英文标题】:Using Python to access DLL functions with Pointers 【发布时间】:2015-08-14 22:32:52 【问题描述】:

我正在尝试构建一个 Python 应用程序来访问专有文件格式(*.abf,由 Axon Instruments 提供)内的数据。指定格式的优秀人员发布了一个 DLL,其中包含可用于打开这些文件、读/写等的函数。

到目前为止一切顺利。我在 SO 和网络上阅读了许多关于使用 ctypes 导入 DLL 的帖子,这似乎工作正常 - 但我试图与之交互的 DLL 中的许多有用函数都将整数指针作为一个参数,而ctypes 没有与之交互的数据类型。

我运气不好?我是否需要用不同的语言编写这个应用程序,或者有什么方法可以在 Python 中一起破解?

谢谢大家, -史蒂夫

【问题讨论】:

【参考方案1】:

看得更深。 Ctypes 确实有Pointers。

from ctypes import *
f = c_float()
f_pointer = pointer(f) # full pointer functionality
f_byref = byref(f) # minimalistic pointer just for passing by reference

【讨论】:

感谢@Berserker 的回复!嗯,是的,我应该更具体。 Ctypes 有指针,但只有 char 和 void - link 它指出了我给你的链接中的 pointer() 和 byref() 函数。但是哦,好吧,我更新了我的答案以帮助你更多。

以上是关于使用 Python 通过指针访问 DLL 函数的主要内容,如果未能解决你的问题,请参考以下文章

从库 (DLL) 函数访问 ui 指针

求助python调用dll函数里,关于数据指针和长度应该如何获得呢?

python调用dll怎么传入一个指针接收结果?

怎么配置opcdaauto dll文件

如何从 MSVC 中的 libsndfile-1.dll 访问函数?

C++ DLL 返回从 Python 调用的指针