首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >DLL (VST插件)中的Qt GUI环境

DLL (VST插件)中的Qt GUI环境
EN

Stack Overflow用户
提问于 2012-10-10 01:16:30
回答 3查看 6K关注 0票数 19

我想使用Qt GUI库作为VST插件的用户界面。VST插件是windows上的DLL。宿主应用程序调用动态链接库上的各种函数,包括openGUI()之类的函数。

我想知道如何在DLL中使用Qt GUI;我已经做了一些研究,以查看可能的选项,但我不能完全确定限制。

主要问题是在哪里创建QApplication对象并对其调用exec() (这是一个直到应用程序退出才会返回的函数)。

我已经看过this post中给出的解决方案,但进一步阅读之后,这个解决方案似乎不能在Mac上工作,因为Cocoa对图形用户界面可以在其上运行的特定线程有更多限制。这真的是一种黑客行为。

我也见过this solution,但它依赖于QMfcAppQWinWindow,它们似乎不再是Qt库的一部分。

解决这个问题的唯一方法是让我的DLL生成一个新的应用程序本身吗?大概我可以通过调用QProcess来启动一个应用程序,并使用一些共享内存在图形用户界面应用程序和我的VST之间共享。有没有人遇到过这样的问题?我是不是走上了一条糟糕的道路,还是有什么我还没有想到的呢?

更新

经过进一步的研究,我发现了QAbstractEventDispatcher类。我见过this post,它似乎说可以从您自己(我的插件的宿主)事件循环中调用QApplication::processEvents(),而不是调用QApplication::exec()。有没有人试过这样做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-13 19:59:20

你的实际问题似乎是在mac上使用Qt作为VST插件,因为有报道称它可以在Windows上运行-参见here (full source tree)和here

有一个关于在mac in the Qt forums上使用VST插件的Qt的成功报道,但另一方面也有一个关于同一问题的open bug

我知道它没有回答你的问题,但我建议使用其他更适合VST插件的UI库,比如JUCEWDL

票数 7
EN

Stack Overflow用户

发布于 2017-05-13 18:45:15

你这样做是不是走错了路?不一定,如果你正在开发一个免费的VST插件。然而,尽管我非常喜欢用于一般软件开发的Qt,但它并不是特别适合VST开发。它的许可是这样的,您不能静态地将DLL与它的库链接起来用于商业用途,除非您为它付费;而且它相当昂贵。当他们制作LGPL时,它使得你可以把你所有的依赖项放在一个目标程序或DLL目录中,对于独立的商业程序,你可以轻松地将其放入十几个DLL中,并且它可以运行,你可以在商业上出售它;而不需要购买许可证。

VST用户习惯于随意移动DLL,以便移动效果;在LGPL下,他们不能只有一个DLL来移动。在目录中散布大量要扫描的额外DLL会使扫描过程变慢。在你的VST插件文件夹中有很多依赖项对于商业插件来说不会像其他商业插件那样工作得很好,因为你不能在一个DLL中生成一个插件并将它静态地链接到Qt库中,而不是为Qt付出很多代价,或者使它成为GPL或其他类似的东西。

编辑:反对它的一个论点是Qt对它的信号和槽进行字符串比较。使用新的连接重载的信号和插槽的新方法不依赖于字符串。

在本地录音棚的Waves插件安装中,我注意到在{Waves Install Directory}/Application目录中,有一些WavesQtLibs文件夹,其中包含Qt库。看起来他们正在使用Qt来开发他们的应用程序,但是如果他们自己使用Qt来开发插件,那么他们要么是静态链接,要么就是不使用它们。由于Waves支持多平台的应用程序和插件,我可以看出Qt对他们有多大的吸引力。据推测,他们可以负担得起Qt许可证进行开发。他们似乎正在为他们的应用程序使用Qt和DLL,这将使操作系统之间的移植变得更容易。我不知道他们是否有使用LGPL的必要通知。我不知道他们是在为自己的插件使用静态链接的Qt,还是在使用JUCE框架(虽然有点昂贵,但也不是在价格上欺骗其有限的用户基础),或者其他什么。

票数 3
EN

Stack Overflow用户

发布于 2012-10-12 23:56:43

从VST执行Qt进程,然后使用IPC在它们之间共享内存(或使用消息传递等)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12805084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档