架构:插件和独立行为

Architecture: plugin and standalone behavior

本文关键字:独立 插件 架构      更新时间:2023-10-16

我想使用 C++ 和 Qt 改进我的新软件的概念架构和模块化

我正在考虑开发一个"主应用程序"和一组"插件"(共享库(来扩展"主应用程序"功能。

我已经对此进行了简单的测试:

1-我构建了一个自定义共享库(我称之为"带UI的插件"(

2-我构建使用QPluginLoader类加载共享库的主应用程序

3-当主应用程序启动时,它会动态加载位于特定文件夹中的所有"插件"。

4-一切运行良好!它有效!

所以,我的怀疑是我希望每个"插件"也可以单独运行......就像一个独立的可执行应用程序。我想"双击"每个插件,或使用终端/控制台调用它......传递一些输入参数...并在没有"主应用程序"的情况下运行它。

如果这是可能的,我的架构将基于开发每个"插件",就像一个完全自主的"软件段"(如可执行文件(一样。

但是,如果此插件文件位于"插件文件夹"内...当"主应用程序"启动时,它也可以动态加载它(就像共享库一样(。

">

加载 dinamicaly"的功能对于能够在"主应用程序"内创建自定义菜单和内部选项非常重要。 而将来,其他人会为这个"主应用"开发新的"插件"。所以我无法"锁定"这个动态加载功能。

有没有办法"混合"这两种文件行为(可执行文件和共享库(?怎么办?

有没有办法"混合"这两种文件行为(可执行文件和共享库(?怎么办?

如果在共享对象的 ELF 标头中指定解释器和入口点,这在 Linux 上基本上是可能的。见 https://stackoverflow.com/a/30807350/563990