Здравствуйте, гость ( Вход | Регистрация )
|
evg123 |
9.6.2010, 15:23
Сообщение
#1
|
|
Студент ![]() Группа: Участник Сообщений: 24 Регистрация: 29.4.2009 Из: Минск Пользователь №: 714 Спасибо сказали: 0 раз(а) Репутация: 0
|
Есть вопрос буквально на засыпку.
Внутрь Dll вставляю QThread. В QThread в run() вставляю exec(). Этот трэд внутри dll-лины обрабатывет сигналы, которые ему генерируют другие трэды, тоже запущенные внутри этой dll-ли (у них метод run() не имеет exec() а реализован в виде безконечного цикла который время от времени генерирует сигналы, подхатываемые и обрабатываемые первым трэдом. ниодин из сигналов (логически) не выходит за рамки dll-ли. Теперь вопрос: Если я линкую эту dll c приложением, которе имеет запущенный QCoreApplication, то всё отрабатываеат просто супер! Если же я пишу некое приложение, которое не имеет запущенной QCoreApplication - то при попытке запустить трэды внутри моей dll-лины возникает ошибка типа QEventLoop: cannot work without QCoreApplication. И никакие сигналы направленные в мой первый трэд не обрабатываются его слотами. Вопрос в принцыпе легко решается - пиши головную программу на Qt, запускай QApplication.exec(), далее загружай dll-ку и всё тут. Да не тут то было. Головная программа написана одна - на дельфи, а другая на MFC. Рыл в нете, какие-то обрывки информации по поводу этой проблемы видел - но никаки конкретных ответов. Народ говорит, что да - такая проблема существует, но толком как её решить или обойти - я на счёт этого ничего не нашёл. Получается что этим замечательным механизмом сигналов и слотов в моём случае я воспользоваться не могу что ли? |
|
|
|
![]() |
|
BRE |
9.6.2010, 15:50
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Посмотри обсуждение:
Link Думаю будет достаточно просто создать объект QCoreApplication, хотя бы статически, в dll. |
|
|
|
evg123 Как внедрить QEventLoop внутрь dll 9.6.2010, 15:23
Гость_evg123_* Цитата(BRE @ 9.6.2010, 15:50) Посмотри об... 9.6.2010, 20:16
BRE Цитата(Гость_evg123_* @ 9.6.2010, 21:16) ... 9.6.2010, 20:24

Гость_evg123_* Цитата(BRE @ 9.6.2010, 20:24) Цитата(Гост... 9.6.2010, 20:29

hkarel Можно попробовать механизм локальной очереди сообщ... 9.6.2010, 21:53

evg123 Цитата(hkarel @ 9.6.2010, 21:53) Можно по... 10.6.2010, 9:12

BRE Цитата(evg123 @ 10.6.2010, 10:12) Для BRE... 10.6.2010, 9:41

hkarel Ну, я так понимаю, раз вы уже имеете опыт работы с... 10.6.2010, 9:41

evg123 Вроде есть стандартное решение проблемы:
взято в h... 10.6.2010, 9:43

hkarel Цитата(evg123 @ 10.6.2010, 10:43) Но, (ё-... 11.6.2010, 10:26
Гость_evg123_* Прочитал ссылку. Будем пробовать. 9.6.2010, 20:24
alex977 evg123,
посмотри здесь:
http://qt.nokia.com/produc... 11.6.2010, 10:41
evg123 Цитата(alex977 @ 11.6.2010, 11:41) evg123... 15.6.2010, 11:15![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 3.1.2026, 6:20 |