Question

J'ai construit une application Windows C ++ que je souhaiterais porter sur Linux. Les principales raisons en sont la facilité de maintenance du système pour notre personnel informatique. Outre la machine Windows qui exécute cette application, nous ne travaillons que sous Linux.

La raison pour laquelle cette application a été créée dans, et s’exécute sur Windows, est qu’elle utilise une API Windows (dll et en-tête) pour se connecter à un serveur appartenant à une partie externe. Cette connexion utilise un protocole propriétaire que je ne veux pas vraiment déranger (et je pense que je ne suis pas contractuellement autorisé à le faire), alors je suis coincé avec le fichier .dll.

Cette DLL est uniquement liée à Windows à cause (je soupçonne) du code spécifique à Windows Sockets dans la DLL. En dehors de cela, il ne fait pas beaucoup de choses avancées. Existe-t-il un moyen de lancer l'application sur Linux dans WINE, de détecter le protocole et de réimplémenter la DLL moi-même, ce qui me permettra d'exécuter cette application sur une machine Linux?

Cette idée a été inspirée par cette élément sur QT creator , donc toute solution qui me permettrait de jouer avec ce serait très cool.

Était-ce utile?

La solution

La solution de rechange la plus évidente serait d’utiliser Winelib . Je ne sais pas s'il peut lier directement à une DLL native, mais sinon, vous pourriez probablement le charger avec LoadLibrary () .

Vous pouvez ensuite scinder votre application en deux parties: un wrapper qui appelle uniquement la DLL et le reste du code qui parle à votre wrapper. Vous pourriez avoir les deux dans des processus séparés, de sorte que seul le wrapper devrait être compilé avec Winelib. Le reste de l'application pourrait alors utiliser le cadre de votre choix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top