我想使用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。祝你好运! –