Exécutez le programme MFC sur Linux
J'ai une assez grande MFC basé sur le programme. J'ai été chargé de le faire fonctionner sur Linux. J'ai expliqué que cela nécessite une ré-écriture du programme en C++ droite avec TSL (plus de travail), ou en Qt/C++ (moins de travail). Je me suis dit maintenant que j'ai besoin d'écrire des wrappers pour obtenir toutes les classes MFC de travail sous Linux et d'utiliser les directives de préprocesseur de compilation uniquement ce qui est nécessaire dans ce soit pour Linux ou Windows. J'ai expliqué que nous sommes d'avoir une déconnecter la communication et que je croyais que cela soit plus de travail que de réécrire l'ensemble du projet à partir de zéro (que je n'aurais pas à le faire pour convertir Qt).
Tout de bons arguments pour aider à expliquer ce problème? Suis-je tort?
- "besoin d'écrire des wrappers pour obtenir toutes les classes MFC de travail sous Linux"...euh, quoi? Je dirais que Qt est la façon la plus sensée à faire.
- MFC est juste une mince wrapper autour de l'API Windows. Vous aurez à remplacer tous les appels d'API avec leur équivalent Linux appels. Celui qui vous faites affaire avec, clairement ne savent pas beaucoup sur la programmation!
- Est une machine virtuelle (Linux comme hostm windows en tant qu'invité) hors de question?
- À peine, à vous plutôt de la carte les classes MFC pour les équivalents dans un autre cadre/bibliothèque de classe - ou utiliser du VIN ou Winelib, de ne pas mettre en œuvre l'ensemble de l'API!
- Vous n'avez pas vu idiomatiques code MFC. Qui suppose qu'un
CDC
est juste unHDC
. Les choses vont descente rapidement quand vous êtes en cours d'exécution sur un système qui n'a tout simplement pas uneHDC
. - Curieux de voir comment l'histoire s'est terminée.
- Je suis trop curieux de savoir comment vous procédez.
Vous devez vous connecter pour publier un commentaire.
Si vous ne voulez pas d'une réécriture complète, vous pouvez essayer de compiler contre Winelib. La plupart des choses devrait fonctionner et puis, puisque vous avez la source, vous pouvez contourner les parties qui ne l'est pas.
La solution la plus évidente consiste à exécuter le code inchangé et de l'onu-recompilé sur le VIN.
Un simple (encombrants) solution consiste à exécuter l'intégralité d'une machine virtuelle Windows sur le système Linux, et le déploiement de l'application virtuelle de disque dur, mais il faudra une licence de Windows et est un peu différent que de simplement la connexion d'un système Windows à Linux en réseau.
Si vous devez ré-écrire, wxWidgets sont plus familiers pour une MFC développeur que Qt peut-être.
Voici un article sur le portage de MFC applications pour Linux qui tient compte de l'utilisation de GTK+, Qt et wxWidgets. Il explique également pourquoi vous devriez envisager de vous et essayez de VIN avant de l'une de ces options. L'auteur parle de futurs articles sur le sujet, mais il semble avoir rien écrit de plus de depuis 2004.
Les sources pour MFC et ATL total à plus de 500000 lignes de code, et la plupart des fonctionnalités de ce code est fourni par l'API de Windows lui-même. Combien de lignes de code pouvez-vous écrire dans une journée? L'ampleur de ce que l'on vous demande de faire est tout simplement impossible, même si vous êtes seulement à la mise en œuvre d'un petit sous-ensemble de la bibliothèque MFC.