Russian Qt Forum
Ноябрь 24, 2024, 00:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызов функций из библиотеки, написанной на Qt  (Прочитано 2631 раз)
plikly
Гость
« : Июнь 18, 2012, 06:36 »

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

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

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


Страница сгенерирована за 0.148 секунд. Запросов: 21.