Я хотел бы использовать библиотеку Qt GUI в качестве пользовательского интерфейса для плагина VST. Плагин VST - это DLL на окнах. Приложение-хозяин вызывает различные функции в DLL, включая такие вещи, как openGUI()
.
Я хочу знать, как использовать Qt GUI из DLL; Я провел некоторое исследование, чтобы посмотреть возможные варианты, но я не совсем уверен в ограничениях.
Основная проблема заключается в создании объекта QApplication
и вызова exec()
на нем (который является функцией, которая не возвращается, пока приложение не завершит работу).
Я рассмотрел решение, данное в этом сообщении, но после дальнейшего чтения оказалось, что это решение не будет работать в Mac OS X, так как Cocoa более ограничительным в отношении конкретного потока, на котором может работать GUI. Это немного взломать.
Я также видел это решение, но полагается на QMfcApp
и QWinWindow
, которые больше не являются частью библиотеки Qt.
Это единственный способ обойти эту DLL для самого нового приложения? Предположительно, я мог бы начать с вызова QProcess
и использовать некоторую разделяемую память для совместного использования между графическим интерфейсом и моей VST DLL? Кто-нибудь сталкивался с этой проблемой? Я иду по плохому маршруту с этим или есть то, о чем я еще не думал?
Обновление
После дальнейших исследований я столкнулся с классом QAbstractEventDispatcher
. Я видел этот пост, который, кажется, позволяет называть QApplication::processEvents()
из вашего собственного (хоста моего плагина) цикла событий вместо вызов QApplication::exec()
. Кто-нибудь пытался это сделать?