Cualquier solución necesitará una capa de "remoto" basada en TCP/IP entre la DLL que se ejecuta en un entorno "similar a Windows" y su aplicación de Linux.
Deberá escribir una aplicación de PC simple para exponer las funciones de DLL, ya sea utilizando un protocolo homebrew o tal vez los protocolos XML-RPC, SOAP o JSON. El SDK de RemObjects podría ayudarlo, pero podría ser excesivo.
Me quedaría con una PC 'real' o virtualizada. Si usa Wine, es poco probable que los desarrolladores de DLL ofrezcan soporte.
También es poco probable que MONO sea de ayuda, porque su archivo DLL probablemente NO sea un ensamblado .NET.
Escribí un pequeño módulo de Python para llamar a archivos DLL de Windows desde Python en Linux. Se basa en IPC entre un proceso regular de Linux/Unix Python y un proceso de Python basado en Wine. Debido a que lo he necesitado en muchos casos de uso / escenarios diferentes, lo diseñé como un ctypes
"genérico" reemplazo directo del módulo, que realiza la mayor parte de la plomería requerida automáticamente en segundo plano.
Ejemplo:suponga que está en Python en Linux, tiene Wine instalado y desea llamar a msvcrt.dll
(la biblioteca de tiempo de ejecución de Microsoft C). Puede hacer lo siguiente:
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))
Código fuente (LGPL), paquete PyPI y documentación.
Todavía es un poco tosco (es decir, alfa e inseguro), pero maneja la mayoría de los tipos de parámetros (incluidos los punteros).