Delphi插件框架

Delphi插件框架,delphi,com,dll,interface,bpl,Delphi,Com,Dll,Interface,Bpl,我想设计Delphi插件框架。有三种选择: 1.DLL 2.BPL 3.COM接口 每种选择都有一些缺点 DLL-MDI应用程序存在问题,插件中的表单无法嵌入主机exe-MDI应用程序。 BPL-每个*.BPL插件和*.exe主机应用程序必须使用相同版本的Delphi进行编译。 COM-接口{xxx xx xxx xx}必须在系统(regsvr)中注册,因此插件框架无法移植 我上面写的一切都是真的吗?如果没有,请纠正我,或者有其他可能性吗? 谢谢是的,你写的是正确的。所有这些都有优点和缺点,问题

我想设计Delphi插件框架。有三种选择:
1.DLL
2.BPL
3.COM接口

每种选择都有一些缺点

DLL-MDI应用程序存在问题,插件中的表单无法嵌入主机exe-MDI应用程序。
BPL-每个*.BPL插件和*.exe主机应用程序必须使用相同版本的Delphi进行编译。
COM-接口{xxx xx xxx xx}必须在系统(regsvr)中注册,因此插件框架无法移植

我上面写的一切都是真的吗?如果没有,请纠正我,或者有其他可能性吗?

谢谢

是的,你写的是正确的。所有这些都有优点和缺点,问题是什么对你很重要,你没有说你想做什么,所以我们不能告诉你怎么做

一般来说,我会在默认情况下选择BPL,如果需要从非Delphi应用程序中使用DLL,则使用DLL,如果确实需要,则选择COM

另一种选择是不构建自己的插件,因为有几个Delphi插件框架可用

此外,本主题之前已在此处讨论过,请查看:


另一种可能性是使用脚本接口,例如使用或。这种方法有许多优点,尤其是插件源代码也是可执行文件,因此易于调试和共享。

我将从Rejects中查看


另一个候选者是(脚本)和(表单设计器)的组合。

我们使用DLL,即使只与Delphi应用程序一起使用。 Dll表单嵌入到主表单中,并使用选项卡而不是MDI。
为了使DLL正常工作,我们还使用了一个共享内存管理器,并使用运行时软件包:vcl、rtl和我们自己的软件包构建。

您是否查看了

可能的重复和可能的重复:COM接口不需要注册。如果知道实现DLL的位置,可以加载它并直接调用其COM相关函数。没有必要让操作系统为你做这件事。这使得它在两种意义上都具有可移植性:你可以在其他操作系统上编译代码,你可以把程序放在USB驱动器上,在任何地方运行。我只读了几篇关于COM接口的文章。从它们来看,所有COM接口都必须在系统中注册。我需要便携式应用程序,因此我拒绝COM编程。但看起来,它是可以携带的。谢谢我必须更深入地学习COM技术;)是的,有一些解决方法可以将错误“无法将TFont分配给TFont”和*.dll中的TFrame传递到主机*.exe应用程序中,但嵌入TFrame的选项卡排序还有一些其他问题(按tab键后,焦点不会移到frame中的下一个控件…)或者也有一些解决方法吗?箭头键也没有被表单截取,这意味着TEdit和TMemo控件不能正常工作。