我正在编写应该具有加载插件功能的delphi应用程序.我正在使用JvPluginManager作为插件系统/管理器;)现在,在新的插件向导中,他们说最好使用.bpl类型的插件而不是.dll插件...这个解决方案与dll类型插件有什么优点?到目前为止,我发现只有这个解决方案的缺点:
我必须将所有通用接口单元放在单独的包中,以便在加载插件时不会抛出包含公共单元的其他包的任何错误
如果,让我们说,其中一个插件开发人员决定使用一些众所周知的单元(如synapse),默认情况下没有运行时包,第二个插件开发人员也会这样做,而不是碰撞 ...它在这里崩溃了. ..
那么,使用bpls而不是使用运行时包编译的dll实际上是什么呢?
提前致谢
我希望为用户添加用于将插件编写到我在Delphi中开发的程序的功能.该程序是单个可执行文件,没有使用DLL.
这将允许用户社区编写我的程序的扩展来访问内部数据并添加他们可能觉得有用的功能.
我看过帖子:添加插件功能的建议?但它的答案似乎无法转移到Delphi程序.
我希望,如果可能的话,添加此功能并将我的应用程序保留为单个可执行文件,而不需要任何DLL或其他模块.
您是否知道任何建议如何在Delphi中做到最好的资源,组件或文章,或者您有自己的建议吗?
我试图从dll函数返回我自己的对象(从TCollection派生).我使用FastMemoryManager,但没有成功......所以我试图返回一些对象的动态数组.
当前在dll函数中的数组的长度.它工作得很好,但是没有释放分配的内存.
(我用Windows tarsk经理测量).是否有可能如何释放动态数组?调用dll函数的过程在线程中,最后我有以下内容:
for i := 0 to length(MyObjectArray) - 1 do begin
if MyObjectArray[i] <> nil then
MyObjectArray[i].Free;
end;
Setlength(MyObjectArray, 0);
MyObjectArray := nil;
Run Code Online (Sandbox Code Playgroud)
如果我使用而不是Setlength(MyObjectArray,0)和MyObjectArray:= nil,则
引发FreeAndNil(MyObjectArray) 异常.
有什么建议吗?