2010-10-29 19 views
7

Linux'ta bir python komut dosyası yazıyorum ve Wine'da bulunan bazı Windows işlevlerini çağırmam gerekiyor. Özellikle uzak bir Windows bilgisayarında oturum açmış olup olmadığını belirlemek için, AllocateAndInitializeSid ve LookupAccountSidW. Bu işlevler, advapi32.dll in Wine'un (düzenleme: yanıtlarını kullanarak, işlevi çağırabilir, ancak LookupAccountSidW yalnızca yerel bilgisayarda çalışır) parçasıdır.Linux'ta python'dan Wine dll nasıl aranır?

Bu işlevlere veya genel olarak Wine dll'e nasıl erişebilirim? Ben

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

denedim ama bir hata ile sonuçlanır:

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

çalışacak başka ctypes işlevi veya Kullanabileceğim bazı şarap arayüzü var mı?

+0

'Windll' denediniz mi? –

cevap

5

Şarap dhl'ın *.so sürümlerini sağlamaz mı? Örneğin, /usr/lib32/wine/advapi32.dll.so var gibi görünüyor.

64 bitlik bir makinede iseniz, 32 bit kitaplıkları yüklemek için 32 bit Python sürümüne ihtiyacınız olacağını unutmayın.

+0

Teşekkürler, bu işe yarıyor! Benim için aslında/usr/lib/wine/advapi32.dll.so' idi. – Justin

+3

Merak için, aslında sadece şarap içinde çalışan python çalışma ve windll.LoadLibrary kullanarak arama yaptım, çünkü görünüşe göre .so dosyası ctypes (cdll) linux sürümünde görünmeyen stdcall çağrı kuralı kullanır. – Justin

0

.DLL'un Windows tarafından kullanılan biçim olduğunu anlayın.

linux günü, bu tür kütüphaneleri diğer teke tek platform için derlenmiş bir kütüphane kullanamaz .bu

ile sona erer. Uyumlu değil.

+3

Yanlış. Onc olabilir. –

+1

** Doğal olarak **, * nix Windows DLL dosyalarını desteklemiyor. Ama yorumunuzla ilgileniyorum, lütfen bir referans verin. – karlphillip

İlgili konular