我可以将Windows dll包装在Linux下的Python中使用吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以将Windows dll包装在Linux下的Python中使用吗?相关的知识,希望对你有一定的参考价值。

是否有可能将Windows DLL(特定硬件的驱动程序)包装在Linux下的Python中使用它。

如果是的话,最好的方法是什么?

答案

免责声明:根据具体情况,以下内容肯定不是最佳方法。这只是一种适合描述的可能方法。

我写了一个小的Python模块,用于在Linux上从Python调用Windows DLL。它基于IPC在常规Linux / Unix Python进程和基于Wine的Python进程之间。因为我自己在太多不同的用例/场景中需要它,所以我将其设计为“通用”ctypes module直接替换,它在后台自动完成大部分所需的管道。

示例:假设您在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))

Source code (LGPL)PyPI packagedocumentation

它的边缘仍然有点粗糙(即alpha和不安全),但它确实处理大多数类型的参数(包括指针)。

我真的很想知道它与硬件驱动程序一起使用时的行为和执行情况。反馈非常欢迎!

以上是关于我可以将Windows dll包装在Linux下的Python中使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

php 怎么安装扩展

如何将 C++ dll 静态链接到 .NET 库(将 c++ dll 构建到网络包装器 dll 以获取一个 dll)

Windows和Linux下的目标文件静态库和动态库

Windows和Linux下的目标文件静态库和动态库

在 Windows 上用 C# 加载 linux 动态库 (.so)

程序员自我修养阅读笔记——Widnows下的动态链接