如何在Linux上从Python调用Wine dll?

8 投票
2 回答
4743 浏览
提问于 2025-04-16 06:17

我在Linux上写一个Python脚本,需要调用一些在Wine中可用的Windows函数。具体来说,我需要用到AllocateAndInitializeSidLookupAccountSidW这两个函数,目的是确定谁登录了远程Windows电脑。这些函数是Wine中的advapi32.dll的一部分(补充说明:通过一些回答,我成功调用了这个函数,但LookupAccountSidW只在本地电脑上有效)。

我该如何访问这些函数,或者一般的Wine dll呢?我尝试了

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

但结果出现了一个错误:

OSError: ~/.wine/drive_c/windows/system32/advapi32.dll: invalid ELF header

有没有其他的ctypes函数可以用,或者我可以使用的Wine接口?

2 个回答

0

要知道,.DLL 是Windows系统使用的文件格式。

而在Linux系统中,这种库文件的后缀是.SO

你不能把为一个平台编译的库文件拿去另一个平台使用,它们之间不兼容。

7

Wine难道不提供*.so格式的dll文件吗?比如我好像有/usr/lib32/wine/advapi32.dll.so这个文件。

如果你使用的是64位的电脑,要记住,你需要一个32位的Python版本才能加载32位的库文件。

撰写回答