Jede Lösung benötigt eine TCP/IP-basierte „Remoting“-Schicht zwischen der DLL, die in einer „Windows-ähnlichen“ Umgebung ausgeführt wird, und Ihrer Linux-App.
Sie müssen eine einfache PC-App schreiben, um die DLL-Funktionen verfügbar zu machen, entweder mit einem Homebrew-Protokoll oder vielleicht XML-RPC-, SOAP- oder JSON-Protokollen. Das RemObjects SDK könnte Ihnen helfen - könnte aber übertrieben sein.
Ich würde bei einem "echten" oder virtualisierten PC bleiben. Wenn Sie Wine verwenden, werden die DLL-Entwickler wahrscheinlich keine Unterstützung anbieten.
MONO ist wahrscheinlich auch keine Hilfe, da Ihre DLL wahrscheinlich KEINE .NET-Assembly ist.
Ich habe ein kleines Python-Modul zum Aufrufen von Windows-DLLs von Python unter Linux geschrieben. Es basiert auf IPC zwischen einem regulären Linux/Unix-Python-Prozess und einem Wine-basierten Python-Prozess. Da ich es selbst in zu vielen verschiedenen Anwendungsfällen / Szenarien benötigt habe, habe ich es als "generisches" ctypes
entworfen Modul-Drop-in-Ersatz, der die meisten erforderlichen Installationen automatisch im Hintergrund durchführt.
Beispiel:Angenommen, Sie befinden sich in Python unter Linux, haben Wine installiert und möchten msvcrt.dll
aufrufen (die Microsoft C-Laufzeitbibliothek). Sie können Folgendes tun:
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))
Quellcode (LGPL), PyPI-Paket &Dokumentation.
Es ist immer noch ein bisschen rau an den Rändern (z. B. Alpha und unsicher), aber es behandelt die meisten Arten von Parametern (einschließlich Zeigern).