crossplatform.ru

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

> Как внедрить QEventLoop внутрь dll, Dll будет юзаться со стороны дельфи либо MFC-приложения
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  


Посмотри обсуждение:
http://www.prog.org.ru/topic_7223_0.html

Думаю будет достаточно просто создать объект QCoreApplication, хотя бы статически, в dll.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_evg123_*_*
сообщение 9.6.2010, 20:16
Сообщение #3





Гости








    


Цитата(BRE @ 9.6.2010, 15:50) *
Посмотри обсуждение:
Думаю будет достаточно просто создать объект QCoreApplication, хотя бы статически, в dll.

Это уже пробовали (очччень многие) - не работает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_evg123_*_*
сообщение 9.6.2010, 20:24
Сообщение #4





Гости








    


Прочитал ссылку. Будем пробовать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 23.12.2024, 2:56