Qt dll in the MFC project |
Здравствуйте, гость ( Вход | Регистрация )
Qt dll in the MFC project |
minigo |
6.7.2010, 22:50
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 6.7.2010 Пользователь №: 1862 Спасибо сказали: 1 раз(а) Репутация: 0 |
Всем привет. Подскажите новичку, возможно ли сделать dll с Qt Gui и использовать её в MFC проекте ? Только мне не желательно грузить её через LoadLibrary, можно ли такую библиотеку прикрепить через lib файл ?
Заранее всем спасибо. |
|
|
DIMEDROLL |
6.7.2010, 23:16
Сообщение
#2
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
подключить можно
только зачем? как планируется ее использовать? Qt GUI требует наличие обьекта QApplication |
|
|
minigo |
6.7.2010, 23:28
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 6.7.2010 Пользователь №: 1862 Спасибо сказали: 1 раз(а) Репутация: 0 |
подключить можно только зачем? как планируется ее использовать? Qt GUI требует наличие обьекта QApplication в dll планирую разместить диалоговые окна, но не хотел бы подгружать её через LoadLibrary. А прокатит такой вариант, в dll разместить QMyWidget, экспортировать его из dll, а в моём MFC приложении использовать QWinWidget для отображения ? |
|
|
minigo |
7.7.2010, 11:50
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 6.7.2010 Пользователь №: 1862 Спасибо сказали: 1 раз(а) Репутация: 0 |
У меня сейчас промежуточная проблема, я собрал MFCMigrationFramework, подключил всё к своему MFC проекту, добавил директивы QT_DLL, QT_GUI_LIB, QT_CORE_LIB, QT_THREAD_SUPPORT, QT_QTWINMIGRATE_IMPORT.
после добавляю код
и проект перестаёт собираться, ошибка линковки - MainFrm.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QWinWidget::QWinWidget(class CWnd *,class QObject *,class QFlags<enum Qt::WindowType>)" (__imp_??0QWinWidget@@QAE@PAVCWnd@@PAVQObject@@V?$QFlags@W4WindowType@Qt@@@@@Z) не подскажите, в чём проблема ? У меня сейчас промежуточная проблема, я собрал MFCMigrationFramework, подключил всё к своему MFC проекту, добавил директивы QT_DLL, QT_GUI_LIB, QT_CORE_LIB, QT_THREAD_SUPPORT, QT_QTWINMIGRATE_IMPORT. после добавляю код
и проект перестаёт собираться, ошибка линковки - MainFrm.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall QWinWidget::QWinWidget(class CWnd *,class QObject *,class QFlags<enum Qt::WindowType>)" (__imp_??0QWinWidget@@QAE@PAVCWnd@@PAVQObject@@V?$QFlags@W4WindowType@Qt@@@@@Z) не подскажите, в чём проблема ? Исправил, ошибка глупая, надо было по HWND вызывать (либо пересобрать библиотеку) |
|
|
DIMEDROLL |
7.7.2010, 12:22
Сообщение
#5
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
|
|
|
minigo |
7.7.2010, 20:04
Сообщение
#6
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 6.7.2010 Пользователь №: 1862 Спасибо сказали: 1 раз(а) Репутация: 0 |
Вообщем, день делов и в MFC проект прикрутил библиотеку Qt с диалоговыми окнами при помощи Qt/MFC Migration Framework. Всем спс !
|
|
|
Алексей1153 |
7.7.2010, 21:27
Сообщение
#7
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
minigo |
8.7.2010, 14:06
Сообщение
#8
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 6.7.2010 Пользователь №: 1862 Спасибо сказали: 1 раз(а) Репутация: 0 |
и в MFC проект прикрутил библиотеку Qt с диалоговыми окнами а скажи честно, какой смысл всего этого ? Мне просто интересно. У нас очень крупный проект на MFC, заморозить проект на полгода (а то и больше) чтобы перевести на Qt мы не можем, поэтому была выбрана стратегия перевода для начала всех библиотек проекта, это будет последовательно, позволит не задерживать релизы. На конечном этапе будет задача перевести основное приложение (т.е. основной модуль) на Qt, для этого момента наверно подгадаем месячишко, и наверно сделаем это для пущей безопасности в отдельном ветке SVN'а. вот поэтому и возникают подобные задачи. |
|
|
Алексей1153 |
8.7.2010, 15:57
Сообщение
#9
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Неправильный какой-то подход. Проблем будет больше, чем взять, выделить дополнительный час в день для параллельного написания проекта на Qt. Общий код, который без изменений можно использовать и там, и там, писать заново не придётся
Наверное, даже лучше сделать так: Берёте проект на MFC и отделяете код GUI и WinAPI от "чистого кода" (который без изменений и на Qt будет работать). Тогда останется тольго Gui написать, на остальное время и силы тратить не надо. А ещё и отлаживать рабочий код не надо. |
|
|
minigo |
8.7.2010, 16:48
Сообщение
#10
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 6.7.2010 Пользователь №: 1862 Спасибо сказали: 1 раз(а) Репутация: 0 |
Неправильный какой-то подход. Проблем будет больше, чем взять, выделить дополнительный час в день для параллельного написания проекта на Qt. Общий код, который без изменений можно использовать и там, и там, писать заново не придётся безусловно, первое что мы делаем, это пишем новые компоненты на Qt, а не переписываем старые. Во вторых, часть нашего комплекса нам поставляется другой конторой в виде кучи библиотек, и наша задача сделать так, чтобы не зависеть только от этого поставщика, для этого у нас одновременно с написанием новых компонентов на Qt проходит переоценка архитектуры, переделываем вообщем и перетаскиваем некоторые старые компоненты под Qt В третьих, часа в день будет ооооочень мало, проекту уже фактически 3 года, и писали его очень интенсивно. Наверное, даже лучше сделать так: Берёте проект на MFC и отделяете код GUI и WinAPI от "чистого кода" (который без изменений и на Qt будет работать). Тогда останется тольго Gui написать, на остальное время и силы тратить не надо. А ещё и отлаживать рабочий код не надо. а ты писал на MFC когда нибудь ? особенно крупные проекты ? скажу честно, проект экспериментальный, местами сильно гуй переплёлся с основным кодом, и так легко на бегу отделить его от основного кода невозможно. Да и если честно, даже крупные проекты надо постоянно переписывать, дабы внедрять новые подходы и технологии. Поэтому переход на новую платформу планируется делать постепенно, реализовывая сначала новые компоненты на Qt, и постепенно перенося старые - естественно с модернизацией ! |
|
|
Текстовая версия | Сейчас: 23.12.2024, 6:55 |