Domanda

Ho creato un'applicazione Windows C ++ che vorrei portare su Linux. I motivi principali per farlo sono la facilità di manutenzione del sistema per il nostro personale IT. Oltre all'unica macchina Windows che esegue questa applicazione, siamo un'operazione solo per Linux.

Il motivo per cui questa applicazione è stata creata ed esegue su Windows è che utilizza un'API di Windows (dll e intestazione) per connettersi a un server appartenente a una parte esterna. Questa connessione utilizza alcuni protocolli proprietari con i quali non voglio davvero scherzare (e penso che non mi sia permesso contrattualmente), quindi sono bloccato con il .dll.

Questa dll è Windows solo a causa (sospetto) di un codice specifico dei socket di Windows nella dll. A parte questo, non fa molte cose avanzate. C'è un modo tra il semplice esecuzione dell'app su Linux in WINE e l'annullamento del protocollo e la reimplementazione della DLL da solo che mi permetterà di far funzionare questa applicazione su una macchina Linux?

Questa idea è stata ispirata da questo elemento sul creatore di QT , quindi qualsiasi soluzione che mi permetta di giocare sarebbe molto interessante.

È stato utile?

Soluzione

La via di mezzo più ovvia sarebbe usare Winelib . Non so se può collegarsi direttamente a una DLL nativa, ma in caso contrario è possibile caricarlo con LoadLibrary () .

È quindi possibile dividere l'applicazione in due parti: un wrapper che chiama solo la DLL e il resto del codice che comunica con il proprio wrapper. Potresti avere entrambi in processi separati, e quindi solo il wrapper dovrebbe essere compilato con Winelib. Il resto dell'applicazione potrebbe quindi utilizzare qualsiasi framework tu voglia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top