![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Гость_Артем_* |
![]()
Сообщение
#1
|
Гости ![]() |
Здравствуйте, уважаемые форумчане.
Есть задача написать кросплатформенную динамическую библиотеку, внутри которой задействованы многопоточность и сетевые взаимодействия. Конечно, qt привлекает своим функционалом, стабильностью, легкостью разработки и тд. Перечислять плюсы можно долго. Однако разрабатываемая бибилиотека должна линковаться к любым приложениям, независимо от того используют ли они qt или нет. И в этом загводка. Для работы Qt требуется объект QApplication или QCoreApplication, которые создают петлю событий, обрабатывают события от ОС и др источников, запускают обработку очереди событий и тд. Этот объект создается в main(). Если приложение, основано на qt, то все в порядке. А если нет.. Где его создавать и возможно ли это? Можно ли сделать такую библиотеку? Заранее спасибо! |
|
|
![]() |
Гость_Гость_* |
![]()
Сообщение
#2
|
Гости ![]() |
Так я понимаю вызов exec() это и есть запуск QeventLoop внутри QThread.
Пробовал запускать петлю событий в библиотеке, где создавал объект, наследуясь от QThread. При линковке библиотеки к обычному (не qt-шному) консольному приложению. пишет в консоль QEventLoop cannot be used without QApplication таймер при этом не работает, но при этом поток в методе run() входит в exec() и не выходит из нее до вызова quit(). пробовал переносить таймер и в основной и в рабочий поток, используя moveToThread(), все ра вно не работает. При этом при линковке бибилиотеки с qt-приложением все работает как часы. При добавлении в библиотеку QCoreApplication тоже все работает. Вопрос соответственно сводится к следующему: не влияет ли создание QCoreApplication на основную программу? |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 14.7.2025, 1:50 |