我们需要与第三方应用程序接口,但该应用程序背后的公司没有公开消息协议,仅提供 Windows DLL 进行接口。
我们的应用程序基于 Linux,因此我无法直接与 DLL 通信。我找不到任何现有的解决方案,所以我正在考虑在 Linux 和 Windows 之间编写基于套接字的桥接器,但是我确信这不是一个独特的问题,之前就应该有人做过。
您是否知道任何允许从 Linux 上的 C 应用程序调用 Windows DDL 函数的解决方案?它可以使用 Wine 或单独的 Windows PC - 没关系。
提前谢谢了。
我编写了一个小型 Python 模块,用于在 Linux 上从 Python 调用 Windows DLL。它基于常规 Linux/Unix Python 进程和基于 Wine 的 Python 进程之间的 IPC。因为我自己在太多不同的用例/场景中需要它,所以我将它设计为“通用”ctypes module直接替换,在后台自动完成大部分所需的管道工作。
示例:假设您使用 Linux 上的 Python,安装了 Wine,并且想要调用msvcrt.dll
(Microsoft C 运行时库)。您可以执行以下操作:
from zugbruecke import 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))
源代码(LGPL), PyPI包 & 文档.
它的边缘仍然有点粗糙(即 alpha 和不安全),但它确实可以处理大多数类型的参数(包括指针)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)