Toute solution nécessitera une couche "remoting" basée sur TCP/IP entre la DLL qui s'exécute dans un environnement "de type Windows" et votre application Linux.
Vous devrez écrire une application PC simple pour exposer les fonctions DLL, soit en utilisant un protocole homebrew, soit des protocoles XML-RPC, SOAP ou JSON. Le SDK RemObjects pourrait vous aider - mais pourrait être exagéré.
Je m'en tiendrai à un PC "réel" ou virtualisé. Si vous utilisez Wine, il est peu probable que les développeurs de DLL offrent une assistance.
Il est également peu probable que MONO soit utile, car votre DLL n'est probablement PAS un assemblage .NET.
J'ai écrit un petit module Python pour appeler des DLL Windows à partir de Python sous Linux. Il est basé sur IPC entre un processus Linux/Unix Python classique et un processus Python basé sur Wine. Parce que j'en ai moi-même eu besoin dans trop de cas d'utilisation / scénarios différents, je l'ai conçu comme un ctypes
"générique" remplacement direct du module, qui effectue automatiquement la plupart des travaux de plomberie requis en arrière-plan.
Exemple :Supposons que vous êtes en Python sous Linux, que Wine est installé et que vous souhaitez appeler msvcrt.dll
(la bibliothèque d'exécution Microsoft C). Vous pouvez effectuer les actions suivantes :
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))
Code source (LGPL), package PyPI et documentation.
Il est encore un peu approximatif sur les bords (c'est-à-dire alpha et non sécurisé), mais il gère la plupart des types de paramètres (y compris les pointeurs).