crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> 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  


Цитата(DIMEDROLL @ 7.7.2010, 0:16) *
подключить можно
только зачем? как планируется ее использовать?
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.

после добавляю код
QWinWidget win( theApp.m_pMainWnd );
win.showCentered();
QMessageBox::about( &win, "About QtMfc", "QtMfc Version 1.0\nCopyright (C) 2003" );


и проект перестаёт собираться, ошибка линковки -
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)

не подскажите, в чём проблема ?

Цитата(minigo @ 7.7.2010, 12:28) *
У меня сейчас промежуточная проблема, я собрал MFCMigrationFramework, подключил всё к своему MFC проекту, добавил директивы QT_DLL, QT_GUI_LIB, QT_CORE_LIB, QT_THREAD_SUPPORT, QT_QTWINMIGRATE_IMPORT.

после добавляю код
QWinWidget win( theApp.m_pMainWnd );
win.showCentered();
QMessageBox::about( &win, "About QtMfc", "QtMfc Version 1.0\nCopyright (C) 2003" );


и проект перестаёт собираться, ошибка линковки -
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  


спасибо, незнал про Qt/MFC Migration Framework
кому интересно, дока тут

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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


фрилансер
******

Группа: Участник
Сообщений: 2886
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(minigo @ 7.7.2010, 23:04) *
и в MFC проект прикрутил библиотеку Qt с диалоговыми окнами

а скажи честно, какой смысл всего этого ? :) Мне просто интересно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
minigo
  опции профиля:
сообщение 8.7.2010, 14:06
Сообщение #8


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 6.7.2010
Пользователь №: 1862

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 7.7.2010, 22:27) *
Цитата(minigo @ 7.7.2010, 23:04) *
и в MFC проект прикрутил библиотеку Qt с диалоговыми окнами

а скажи честно, какой смысл всего этого ? :) Мне просто интересно.


У нас очень крупный проект на MFC, заморозить проект на полгода (а то и больше) чтобы перевести на Qt мы не можем, поэтому была выбрана стратегия перевода для начала всех библиотек проекта, это будет последовательно, позволит не задерживать релизы. На конечном этапе будет задача перевести основное приложение (т.е. основной модуль) на Qt, для этого момента наверно подгадаем месячишко, и наверно сделаем это для пущей безопасности в отдельном ветке SVN'а.
вот поэтому и возникают подобные задачи.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 8.7.2010, 15:57
Сообщение #9


фрилансер
******

Группа: Участник
Сообщений: 2886
Регистрация: 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  


Цитата(Алексей1153 @ 8.7.2010, 16:57) *
Неправильный какой-то подход. Проблем будет больше, чем взять, выделить дополнительный час в день для параллельного написания проекта на Qt. Общий код, который без изменений можно использовать и там, и там, писать заново не придётся


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

Цитата(Алексей1153 @ 8.7.2010, 16:57) *
Наверное, даже лучше сделать так: Берёте проект на MFC и отделяете код GUI и WinAPI от "чистого кода" (который без изменений и на Qt будет работать). Тогда останется тольго Gui написать, на остальное время и силы тратить не надо. А ещё и отлаживать рабочий код не надо.


а ты писал на MFC когда нибудь ? особенно крупные проекты ? скажу честно, проект экспериментальный, местами сильно гуй переплёлся с основным кодом, и так легко на бегу отделить его от основного кода невозможно. Да и если честно, даже крупные проекты надо постоянно переписывать, дабы внедрять новые подходы и технологии.

Поэтому переход на новую платформу планируется делать постепенно, реализовывая сначала новые компоненты на Qt, и постепенно перенося старые - естественно с модернизацией !
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.9.2019, 16:49