Запустить программу MFC в Linux

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

Какие-нибудь хорошие аргументы, чтобы помочь объяснить эту проблему? Я не прав?

Ответы

Ответ 1

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

Ответ 2

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

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

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

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

Ответ 3

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