Запустить программу MFC в Linux - PullRequest
16 голосов
/ 04 августа 2011

У меня довольно большая программа на основе MFC.Мне было поручено запустить его на Linux.Я объяснил, что для этого потребуется переписать программу либо на прямой C ++ с STL (больше работы), либо на Qt / C ++ (меньше работы).Теперь мне сказали, что мне нужно написать обертки, чтобы каждый класс MFC работал в Linux, и использовать директивы препроцессора, чтобы компилировать только то, что нужно в Linux или Windows.Я объяснил, что у нас отключение связи и что я считаю, что это больше, чем переписывание всего проекта с нуля (что мне не нужно было бы делать для преобразования в Qt).помочь объяснить эту проблему?Я не прав?

Ответы [ 3 ]

15 голосов
/ 04 августа 2011

Если вам не нужна полная перезапись, попробуйте скомпилировать с Winelib .Большинство вещей должно просто работать, и тогда, когда у вас есть источник, вы можете обойти части, которые не работают.

7 голосов
/ 04 августа 2011

Очевидное решение - запустить код без изменений и не перекомпилировать в WINE.

Простое (грязное) решение состоит в том, чтобы запустить всю виртуальную машину Windows в системе Linux и развернуть приложение как виртуальный жесткий диск, но для этого потребуется лицензия Windows, и она ничем не отличается от простого подключения системы Windows к сеть Linux.

Если вам нужно переписать, wxWidgets будет более знаком для разработчика MFC, чем, возможно, Qt.

Вот статья о переносе приложений MFC в Linux, в которой рассматривается использование GTK +, Qt и wxWidgets. В нем также обсуждается, почему вы должны рассмотреть и попробовать WINE перед любым из этих вариантов. Автор рассказывает о будущих статьях на эту тему, но, похоже, ничего не написал с 2004 года.

4 голосов
/ 04 августа 2011

Исходники для MFC и ATL насчитывают более 500000 строк кода, и большая часть функциональности этого кода фактически обеспечивается самим Windows API. Сколько строк кода вы можете написать за день? Масштаб того, что вас просят сделать, просто непрактичен, даже если вы реализуете лишь небольшое подмножество MFC.

...