我想使用Qt GUI庫作爲VST插件的用戶界面。 VST插件是Windows上的DLL。主機應用程序調用DLL上的各種函數,包括諸如openGUI()
之類的東西。DLL中的Qt GUI環境(VST插件)
我想知道如何從DLL中使用Qt GUI;我已經做了一些研究,看看可能的選擇,但我不完全確定這些限制。
主要的問題是在哪裏創建QApplication
對象並調用exec()
(它是一個函數,直到應用程序退出纔會返回)。
我已經看了看this post給出的解決方案,但經過進一步的閱讀它會出現在這個解決方案將不能在Mac OS X上運行,如可可更嚴格的關於特定線程一個GUI上都可以運行。這真的有點破解。
我也看到了this solution,但這依賴於QMfcApp
和QWinWindow
,它們似乎不再是Qt庫的一部分。
對於我的DLL來生成一個新的應用程序本身的唯一方法是繞過這個嗎?大概我可以開始一個與以QProcess
通話,並使用一些共享內存的GUI應用程序,我的VST DLL之間共享?有沒有人遇到這種類型的問題?我是否會因此而走上糟糕的路線,還是有一些我還沒有想到的東西?
更新
進一步研究後,我所遇到的QAbstractEventDispatcher
類。我已經看到this post似乎說可以從你自己的(我的插件的主機)事件循環調用QApplication::processEvents()
而不是調用QApplication::exec()
。有沒有人試過這樣做?
我在windows上完成了它(第一個解決方案與單獨的線程)。這是非常困難的,因爲我們需要從禁止的dllmain中激發一個單獨的線程。 QMfcApp從來不是Qt的一部分,而是所謂的「解決方案」。你可以在這裏找到http://qt.gitorious.org/qt-solutions/qt-solutions/trees/master/qtwinmigrate。祝你好運! –