【问题标题】:How to call Wine dll from python on Linux?如何在 Linux 上从 python 调用 Wine dll?
【发布时间】:2011-05-02 10:45:27
【问题描述】:

我正在Linux 中编写python 脚本,需要调用Wine 中可用的一些Windows 函数。具体来说,AllocateAndInitializeSidLookupAccountSidW,以确定谁登录到远程 Windows 计算机。这些函数是advapi32.dll in Wine 的一部分(编辑:使用答案,我能够调用该函数,但 LookupAccountSidW 仅适用于本地计算机)。

我如何才能访问这些函数,或者一般来说是 Wine dll?我试过了

>>> cdll.LoadLibrary("~/.wine/drive_c/windows/system32/advapi32.dll")

但它会导致错误:

OSError: ~/.wine/drive_c/windows/system32/advapi32.dll: 无效的 ELF 标头

还有其他ctypes 可以工作的函数,或者我可以使用的葡萄酒界面吗?

【问题讨论】:

  • 你试过windll吗?

标签: python linux dll wine


【解决方案1】:

了解 .DLL 是 Windows 使用的格式。

在 linux 上,此类库以 .SO

结尾

您不能在另一个平台上使用为一个平台编译的库。不兼容。

【讨论】:

  • 我的意思是 本机,*nix 不支持 Windows DLL。但是我对您的评论很感兴趣,请提供参考。
【解决方案2】:

Wine 不提供*.so 版本的dll 吗?例如,我似乎有/usr/lib32/wine/advapi32.dll.so

如果您使用的是 64 位计算机,请记住,您需要 32 位版本的 Python 才能加载 32 位库。

【讨论】:

  • 谢谢,这行得通!对我来说,它实际上是在/usr/lib/wine/advapi32.dll.so
  • 出于好奇,我实际上只得到了在 wine 中运行 python 并使用 windll.LoadLibrary 的调用,因为显然 .so 文件使用 stdcall 调用约定,这在 linux 版本中没有公开ctypes (cdll)。
猜你喜欢
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多