是否可以包装 Windows DLL(特定硬件的驱动程序)以在 Linux 下从 Python 使用它。
如果是,最好的方法是什么?
免责声明:根据具体情况,以下当然不是最好的方法。这只是一种符合描述的可能方法。
我编写了一个小的 Python 模块,用于在 Linux 上从 Python 调用 Windows DLL。它基于常规 Linux/Unix Python 进程和基于 Wine 的 Python 进程之间的 IPC。因为我自己在太多不同的用例/场景中都需要它,所以我将它设计为“通用”ctypes
模块的替代品,它在后台自动完成大部分所需的管道。
示例:假设您在 Linux 上使用 Python,您安装了 Wine,并且想要调用msvcrt.dll
(Microsoft C 运行时库)。您可以执行以下操作:
import zugbruecke as ctypes
dll_pow = ctypes.cdll.msvcrt.pow
dll_pow.argtypes = (ctypes.c_double, ctypes.c_double)
dll_pow.restype = ctypes.c_double
print('You should expect "1024.0" to show up here: "%.1f".' % dll_pow(2.0, 10.0))
它的边缘仍然有点粗糙(即 alpha 和不安全),但它确实可以处理大多数类型的参数(包括指针)。
我真的很想看看它在与硬件驱动程序一起使用时如何表现和执行。非常欢迎反馈!