Solusi apa pun akan membutuhkan lapisan "remoting" berbasis TCP/IP antara DLL yang berjalan di lingkungan "mirip windows", dan aplikasi linux Anda.
Anda harus menulis aplikasi PC sederhana untuk mengekspos fungsi DLL, baik menggunakan protokol homebrew, atau mungkin protokol XML-RPC, SOAP, atau JSON. SDK RemObjects mungkin membantu Anda - tetapi bisa jadi berlebihan.
Saya akan tetap menggunakan PC 'nyata' atau virtual. Jika Anda menggunakan Wine, pengembang DLL kemungkinan tidak akan menawarkan dukungan apa pun.
MONO juga tidak mungkin membantu, karena DLL Anda mungkin BUKAN rakitan .NET.
Saya menulis modul Python kecil untuk memanggil Windows DLL dari Python di Linux. Ini didasarkan pada IPC antara proses Linux/Unix Python biasa dan proses Python berbasis Wine. Karena saya sendiri membutuhkannya dalam banyak kasus penggunaan/skenario yang berbeda, saya merancangnya sebagai ctypes
"generik" penggantian drop-in modul, yang melakukan sebagian besar pipa ledeng yang diperlukan secara otomatis di latar belakang.
Contoh:Asumsikan Anda menggunakan Python di Linux, Anda telah menginstal Wine, dan Anda ingin memanggil msvcrt.dll
(pustaka runtime Microsoft C). Anda dapat melakukan hal berikut:
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))
Kode sumber (LGPL), paket &dokumentasi PyPI.
Ini masih agak kasar di sekitar tepinya (yaitu alfa dan tidak aman), tetapi menangani sebagian besar jenis parameter (termasuk pointer).