VSTプラグインのユーザーインターフェイスとしてQt GUIライブラリを使用したいと思います。 VSTプラグインは、Windows上のDLLです。ホストアプリケーションは、openGUI()
などのDLLのさまざまな関数を呼び出します。DLL(VSTプラグイン)のQt GUI環境
DLLからQt GUIを使用する方法を知りたいです。私は可能なオプションを調べるためにいくつかの研究を行ったが、私は限界について完全にはわかっていない。
主な問題は、QApplication
オブジェクトを作成し、exec()
(アプリケーションが終了するまで返されない関数)を呼び出す場所です。
私はthis postで示された解決策を見てきましたが、さらに読むと、この解決策はMac OS Xでは動作しないように見えます.CocoaはGUIが実行できる特定のスレッドについてより制限的です。それは本当にハックのビットです。
this solutionも見たことがあるが、これはQMfcApp
およびQWinWindow
に依存しており、これ以上Qtライブラリの一部ではないようである。
私のDLLが新しいアプリケーション自体を生成するための唯一の方法ですか?おそらく私はQProcess
への呼び出しで起動し、GUIアプリケーションと私のVST DLLの間で共有するためにいくつかの共有メモリを使用するでしょうか?誰もこのタイプの問題に遭遇しましたか?私はこれで悪いルートを下っていますか、まだ私が考えていないものがありますか?
アップデートは
さらなる研究の後、私はQAbstractEventDispatcher
クラスに遭遇してきました。私はQApplication::exec()
を呼び出すのではなく、自分の(プラグインのホスト)イベントループからQApplication::processEvents()
を呼び出すことが可能だと思われるthis postを見ました。誰もこれをやってみましたか?
私は窓でそれをやった(別のスレッドを持つ最初の解決策)。禁止されているdllmainから別のスレッドを起動する必要があったので、本当に難しかったです。 QMfcAppはQtの一部ではなく、いわゆる「ソリューション」です。ここでそれを見つけるhttp://qt.gitorious.org/qt-solutions/qt-solutions/trees/master/qtwinmigrate。がんばろう! –