Портировать на Linux или писать обертки для MFC? - PullRequest
2 голосов
/ 15 августа 2011

Легче ли разделить основные функции программы и перенести ее на Linux или написать обертки вокруг функций MFC, чтобы запустить исходную программу MFC в Linux?

Пример:

Возьмите свое базовое диалоговое приложение MFC (несколько диалоговых окон), заставьте его работать в командной строке Linux без изменения кода анализа ядра. Основная цель - НЕ изменять код анализа. Имея это в виду, напишите версию программы для командной строки, которая использует те же файлы, которые приложение MFC использует для кода анализа. Напишите код, который будет действовать точно так же, как классы MFC и функции, которые используются в коде анализа. На самом деле, просто начните с исходного кода MFC для этих классов, вырежьте все специфические вещи Microsoft (MFC, ATL и т. Д.) И используйте это для своего кода-оболочки.

против

Возьмите код анализа ядра, включите его в проект командной строки Qt. Для любой функциональности MFC или Win32 замените ее эквивалентной кроссплатформенной совместимой функциональностью из Qt или STL / Boost.

Ответы [ 2 ]

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

Попробуйте скомпилировать его с Winelib , и вам не придется переписывать большинство функций.

В свете ваших комментариев, учитывая время иресурсы Я бы определенно разделил исходный код на четко определенные уровни:

Уровень, зависящий от ОС / платформы,
Уровень абстракции ОС,
Промежуточное программное обеспечение, независимое от ОС &
Уровень пользовательского интерфейса

Это самая базовая многоуровневая архитектура, с которой можно столкнуться в любом программном приложении.Таким образом, всякий раз, когда мне нужно перенести его на новую операционную систему / платформу, мне просто нужно написать OS/platform dependent layer, и все остальные мои слои остаются неизменными.Точно так же, когда возникает необходимость изменить структуру пользовательского интерфейса, я легко могу изменить UI layer, а остальная часть стека остается неизменной.

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

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

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

Кстати, Qt и STL / Boost являются многоплатформенными библиотеками, поэтому в будущем вы можете использовать «портированную» версию в качестве многоплатформенной версии, развернув ее также в Windows и избавившись от зависимости MFC (преимущество: только одна кодовая база для работы; недостаток: Qt довольно тяжелая зависимость).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...