mig*_*jek 23 delphi dll plugins bpl
我正在编写应该具有加载插件功能的delphi应用程序.我正在使用JvPluginManager作为插件系统/管理器;)现在,在新的插件向导中,他们说最好使用.bpl类型的插件而不是.dll插件...这个解决方案与dll类型插件有什么优点?到目前为止,我发现只有这个解决方案的缺点:
我必须将所有通用接口单元放在单独的包中,以便在加载插件时不会抛出包含公共单元的其他包的任何错误
如果,让我们说,其中一个插件开发人员决定使用一些众所周知的单元(如synapse),默认情况下没有运行时包,第二个插件开发人员也会这样做,而不是碰撞 ...它在这里崩溃了. ..
那么,使用bpls而不是使用运行时包编译的dll实际上是什么呢?
提前致谢
ska*_*adt 17
BPL的另一个缺点.当您切换Delphi版本时,您将不得不重新分发新插件.在尝试寻找完美插件系统的许多尝试之后,我最终得到了COM,我从未后悔过这个决定.在已经有超过8年的插件需求的商业应用程序中,应用程序继续向前发展,但是在第一次迭代中发布的一些插件仍然以其原始形式存在.
如果您选择此方法,请帮自己一个忙,然后从一个简单的界面开始,然后在其上添加新的界面.您不希望更改基本界面,因此请保持简单和甜蜜.
正如亚历山大所说,BPL基本上是一个DLL.但是有一些条件(从我做的一个不那么简短的总结:http://wiki.freepascal.org/packages):
简而言之:如果插件架构是开放的,请将其设为DLL.否则,人们必须拥有完全相同的Delphi版本才能编写插件.
混合也是可能的.一个更高级别的.BPL接口,用于功能,您可以将自己和选定的级别分解为.BPL,以及其余部分的底层程序DLL接口.
第三种选择是使用DLL,但是命名为Sharemem.字符串将工作,多个Delphi版本将工作.对象可以工作但不安全(例如我猜,例如D2009与早期版本不起作用).甚至其他语言用户也许可以通过COM进行分配,而不是完全排除非Delphi.
| 归档时间: |
|
| 查看次数: |
10164 次 |
| 最近记录: |