Как вызвать Wine dll из python на Linux? - PullRequest
8 голосов
/ 29 октября 2010

Я пишу скрипт на Python в Linux, и мне нужно вызвать некоторые функции Windows, доступные в Wine.В частности, AllocateAndInitializeSid и LookupAccountSidW, чтобы определить, кто вошел в систему на удаленном компьютере Windows.Эти функции являются частью advapi32.dll в Wine ( edit : используя ответы, я смог вызвать функцию, но LookupAccountSidW работает только на локальном компьютере).

Как я могу получить доступ к этим функциям или к винной DLL в целом?Я пробовал

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

, но это приводит к ошибке:

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

Есть ли другая функция ctypes, которая могла бы работать, или какой-нибудь винный интерфейс, который я мог бы использовать?

Ответы [ 2 ]

6 голосов
/ 29 октября 2010

Разве Wine не предоставляет *.so версии dll?Я, кажется, /usr/lib32/wine/advapi32.dll.so, например.

Если вы работаете на 64-битной машине, имейте в виду, что вам потребуется 32-битная версия Python для загрузки 32-битных библиотек.

0 голосов
/ 29 октября 2010

Следует понимать, что .DLL - это формат, используемый Windows.

В linux такие библиотеки заканчиваются на .SO

Нельзя использовать библиотеку, скомпилированную для одной платформы, на другой. Это не совместимо.

...