Linux上Python中的导入dll

Linux上Python中的导入dll,python,dll,ctypes,Python,Dll,Ctypes,您好,我有一段在Windows上完美运行的代码: import ctypes import sys import os from ctypes import * from numpy import * import time from ctypes.util import find_library libEDK = cdll.LoadLibrary("edk.dll") 我试着在Ubuntu上运行这个,我得到了: Tracebac

您好,我有一段在Windows上完美运行的代码:

    import ctypes
    import sys
    import os
    from ctypes import *
    from numpy import *
    import time
    from ctypes.util import find_library
    libEDK = cdll.LoadLibrary("edk.dll")
我试着在Ubuntu上运行这个,我得到了:

Traceback (most recent call last):

 File "/home/nassar/Downloads/python/sds.py", line 9, in <module> 
   libEDK = cdll.LoadLibrary("/home/nassar/Desktop/python/edk.dll")
  File "/usr/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /home/nassar/Desktop/python/edk.dll: invalid ELF header
回溯(最近一次呼叫最后一次):
文件“/home/nassar/Downloads/python/sds.py”,第9行,在
libEDK=cdll.LoadLibrary(“/home/nassar/Desktop/python/edk.dll”)
LoadLibrary中的文件“/usr/lib/python2.7/ctypes/_init__uuu.py”,第443行
返回自我类型(名称)
文件“/usr/lib/python2.7/ctypes/_init__.py”,第365行,在_init中__
self.\u handle=\u dlopen(self.\u名称,模式)
OSError:/home/nassar/Desktop/python/edk.dll:ELF头无效

在Linux上,我们有一个叫做
共享对象(.so)的东西,而不是DLL


长话短说:您不能在Linux系统上加载Windows DLL。您需要编译一个Linux共享库(“edk.so”)。

er。。。你不能那样做

共享库非常依赖操作系统,因此为windows构建的库不可能在linux中工作,反之亦然


除了你可能会得到一些运气,这是一个Windows运行时,工作在许多平台上。我在wine中运行Python二进制文件确实取得了一些成功。

有什么线索可以从哪里开始?把它编译成。那么?你有没有测试过葡萄酒的想法?我严重怀疑您能否在*nix系统上从Python加载windows DLL。除非你在WINE上运行所有的东西,包括Python——在这种情况下,可以/必须使用原始代码。@lukas:是的,没错,你必须在WINE中运行windows版本的Python。