Russian Qt Forum

Qt => Общие вопросы => Тема начата: plikly от Июнь 18, 2012, 06:36



Название: Вызов функций из библиотеки, написанной на Qt
Отправлено: plikly от Июнь 18, 2012, 06:36
Такая ситуация.
Есть разделяемая библиотека, написанная на Qt4.
В ней через export "C" экспортируются разные функции, их довольно много.
Требуется эти функции вызывать из кода, написанного не на Qt и вообще не на С++.
В чём проблема: библиотека написана кривовато, внутри использует потоки и таймеры, и всё это хозяйство не работает, если в вызывающем коде нет QApplication, чтобы работал eventLoop, и таймеры отказываются работать, если вызвать функцию из потока, который создан не Qt.

Как можно обойти эти ограничения.
Мне видится такой подход:
создать библиотеку wrapper, повторяющий исходную библиотеку, и в котором через QLib будут загружены функции исходнйо библиотеки.
В новой библиотеке будет один нормальный  поток с QApplication.
При вызове функций из этой новой библиотеки каким-то образом (КАКИМ?) функция вызывается не в вызывающем потоке, а в потоке, в котором действует QApplication.

Как-то так. Или хоть как по-другому, но чтобы условия задачки были соблюдены: код реально вызывался не из вызываемого потока, который не QThread, а так, как-будто бы для исходной библиотеки он был вызван из неё самой или другого приложения на Qt.