Jakékoli řešení bude vyžadovat „vzdálenou“ vrstvu založenou na TCP/IP mezi knihovnou DLL, která běží v prostředí „podobném oknům“, a vaší linuxovou aplikací.
Budete muset napsat jednoduchou aplikaci pro PC, abyste odhalili funkce DLL, buď pomocí homebrew protokolu, nebo možná protokolů XML-RPC, SOAP nebo JSON. RemObjects SDK vám může pomoci – ale může být přehnané.
Zůstal bych u 'skutečného' nebo virtualizovaného PC. Pokud používáte Wine, vývojáři DLL pravděpodobně nenabídnou žádnou podporu.
MONO také pravděpodobně nepomůže, protože vaše DLL pravděpodobně NENÍ sestavení .NET.
Napsal jsem malý modul Python pro volání do Windows DLL z Pythonu na Linuxu. Je založen na IPC mezi běžným procesem Linux/Unix Python a procesem Python založeným na Wine. Protože jsem to sám potřeboval v příliš mnoha různých případech použití/scénářů, navrhl jsem to jako "obecný" ctypes
výměna modulu drop-in, která většinu požadované instalace provádí automaticky na pozadí.
Příklad:Předpokládejme, že jste v Pythonu na Linuxu, máte nainstalované Wine a chcete volat do msvcrt.dll
(runtime knihovna Microsoft C). Můžete provést následující:
from zugbruecke import ctypes
dll_pow = ctypes.cdll.msvcrt.pow
dll_pow.argtypes = (ctypes.c_double, ctypes.c_double)
dll_pow.restype = ctypes.c_double
print('You should expect "1024.0" to show up here: "%.1f".' % dll_pow(2.0, 10.0))
Zdrojový kód (LGPL), balíček PyPI a dokumentace.
Na okrajích je stále trochu drsný (tj. alfa a nejistý), ale zvládá většinu typů parametrů (včetně ukazatelů).