Как добавить поддержку MFC в существующий проект Win32 C ++? - PullRequest
5 голосов
/ 06 января 2010

Я создаю приложение C ++, которое использует Qt для создания GUI. Однако мне нужно использовать стороннюю библиотеку, которая использует MFC (для CString и т. Д.). Есть ли способ добавить MFC в мое приложение, чтобы я мог использовать эту библиотеку, или мне нужно переписать ее самому?

Я видел этот вопрос , но он не говорит мне, как добавить MFC вручную в проект.

Ответы [ 6 ]

3 голосов
/ 06 января 2010

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

Если вы используете Visual studio, вы можете просто установить флажок «использовать MFc в статической / разделяемой библиотеке», это не повлияет на графический интерфейс вашего приложения, пока вы сохраняете текущую точку входа в программу.

1 голос
/ 07 января 2010

Было бы намного проще найти замену сторонней библиотеки MFC.

Сторонней библиотеке, статической или динамически связанной, потребуется версия MFC, точно такая же, как и версия, используемая для компиляции стороннего файла lib. Классы MFC не являются двоично-совместимыми между версиями и даже двоично-совместимыми между конфигурациями (статические / динамически связанные MFC и CRT, одно- или многопоточные CRT, отладка, выпуск, X86, X64, MBCS, UNICODE и т. Д.) Той же версии ,

Если вы используете CString :: LoadString или что-то еще, что обращается к состоянию модуля MFC, для этого потребуется глобальное CWinApp. Самый простой способ получить это - создать обычную DLL. Добавление одного в ваш проект QT потребует от вас перемещения кода из существующей функции входа в InitInstance и ExitInstance.

1 голос
/ 06 января 2010

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

Например, это CString реализация

0 голосов
/ 02 января 2017

Чтобы добавить поддержку MFC в Integra, необходимы следующие изменения:

  1. Изменить точку входа в приложение:
    • Обычно точка входа в приложение qt является основной, для приложения MFC ожидаемой точкой входа является WinMain / wWinMain.
  2. Добавьте необходимые зависимости MFC (mfc140d.dll / mfc140.dll и т. Д.).
    • Добавьте папку System32 в путь к среде, чтобы найти необходимые зависимости.
    • Упакуйте необходимые библиотеки при создании установщика
0 голосов
/ 24 мая 2010

Если существующая программа Windows использует цикл сообщений (вместо отдельных обработчиков событий, используемых MFC), вы можете создать подкласс окна на любом уровне, необходимом для обработки этого цикла сообщений и переопределить функцию WindowProc.

Например, я взял существующую программу Win32 и встроил ее главное окно в окно изображения CStatic, заменив WindowProc на подклассы CStatic. Функциональность предыдущей программы содержалась в CStatic, но я мог бы добавить другие элементы управления и парадигмы MFC в окружающую границу.

0 голосов
/ 06 января 2010

Да, вы можете использовать MFC, выбрав его в опциях компиляции и ссылки. Если ваша единственная причина - сторонняя библиотека, вы, вероятно, захотите отказаться от использования каких-либо функций MFC в своем собственном коде. Таким образом, если вы когда-нибудь замените стороннюю библиотеку, вы также можете отключить MFC.

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