Russian Qt Forum
Май 29, 2024, 13:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Dll на Qt + QTcpSocket для вызова не в Qt-приложении  (Прочитано 14935 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #15 : Август 17, 2013, 13:40 »

Тут закавыка интересная. QThread не запуститься без QApplication. Точнее не запуститься его цикл событий.
А в чем проблема создавать экземпляр QCoreApplication?
Записан
dim.lian_net
Гость
« Ответ #16 : Август 17, 2013, 13:40 »

В Dllmain  при DLL_PROCESS_ATTACH: создаю объект QCoreApplication core(argc,0);
НЕ ВЫЗЫВАЮ exec();
создаю поток QThread() и в методе run(); вызываю exec();
то Qt выдаeт: "QEventLoop: Cannot be used without QApplication" и соответственно сигналы не работают.
Записан
dim.lian_net
Гость
« Ответ #17 : Август 17, 2013, 13:43 »

А зачем его создавать, если eventloop не запускать?
Записан
Bepec
Гость
« Ответ #18 : Август 17, 2013, 13:48 »

eventLoop не запускается, если он не создан в отдельном WinApi потоке.Во всяком случае мне его заставить работать не удалось без потока. Мб чуть попозже посмотрю свои исходники - кину.
« Последнее редактирование: Август 17, 2013, 13:51 от Bepec » Записан
dim.lian_net
Гость
« Ответ #19 : Август 17, 2013, 14:09 »

А без QCoreApplication::exec() он может работать?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #20 : Август 17, 2013, 14:11 »

В Dllmain  при DLL_PROCESS_ATTACH: создаю объект QCoreApplication core(argc,0);
НЕ ВЫЗЫВАЮ exec();
создаю поток QThread() и в методе run(); вызываю exec();
то Qt выдаeт: "QEventLoop: Cannot be used without QApplication" и соответственно сигналы не работают.
Ага. Создаете экземпляр QApplication на стеке и он разрушается при выходе из DllMain.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #21 : Октябрь 03, 2013, 15:47 »

И всё-таки, кому-нибудь удалось запустить механизм сигнал/слот внутри dll из консольного не Qt Windows приложения?
Записан
Bepec
Гость
« Ответ #22 : Октябрь 03, 2013, 16:39 »

Из консольного не пробовал, но из обычного получалось.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #23 : Октябрь 04, 2013, 09:29 »

Из консольного не пробовал, но из обычного получалось.
Неоднократно тут на форуме встречал твоё обещание выложить кусочек кода на эту тему Улыбающийся.
Если не затруднит, покажи свою реализацию DLLMain.
Записан
Bepec
Гость
« Ответ #24 : Октябрь 04, 2013, 09:33 »

Омм... Это да, постоянно забываю найти и выложить.

PS если ещё припомнишь что я там обещал выложить - напиши в ЛС. А то пипец на работе заставляет забывать Улыбающийся Разгрести надо.
« Последнее редактирование: Октябрь 04, 2013, 09:37 от Bepec » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #25 : Октябрь 09, 2013, 15:11 »

Раз уж публично попрекнул Вереса невыполнением обещаний, публично и поблагодарю.
Тут обещанное выложено http://www.prog.org.ru/topic_25323_0.html
И таки-да, оно работает. Проблема у меня лично была в том, что для того, чтобы заработали циклы обработки сообщений в DLL нужно было все объекты, которые участвуют в процессе сигнал/слот, создавать в той же потоковой функции, где создается QCoreApplcation.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 19.