plikly
Гость
|
|
« : Июнь 18, 2012, 06:36 » |
|
Такая ситуация. Есть разделяемая библиотека, написанная на Qt4. В ней через export "C" экспортируются разные функции, их довольно много. Требуется эти функции вызывать из кода, написанного не на Qt и вообще не на С++. В чём проблема: библиотека написана кривовато, внутри использует потоки и таймеры, и всё это хозяйство не работает, если в вызывающем коде нет QApplication, чтобы работал eventLoop, и таймеры отказываются работать, если вызвать функцию из потока, который создан не Qt.
Как можно обойти эти ограничения. Мне видится такой подход: создать библиотеку wrapper, повторяющий исходную библиотеку, и в котором через QLib будут загружены функции исходнйо библиотеки. В новой библиотеке будет один нормальный поток с QApplication. При вызове функций из этой новой библиотеки каким-то образом (КАКИМ?) функция вызывается не в вызывающем потоке, а в потоке, в котором действует QApplication.
Как-то так. Или хоть как по-другому, но чтобы условия задачки были соблюдены: код реально вызывался не из вызываемого потока, который не QThread, а так, как-будто бы для исходной библиотеки он был вызван из неё самой или другого приложения на Qt.
|