bpl delphi专家和dll delphi专家之间的区别是什么

时间:2011-05-19 17:36:16

标签: delphi ide delphi-2007 toolsapi

我在delphi IDE专家工作,现在为了避免依赖性问题,我正在考虑重建这个专家作为dll专家,正如其中一个answers建议的那样,现在我的专家(编译为bpl)访问ScreenApplication全局变量(Delphi IDE的实例),所以我想知道如果我编译我的专家作为一个DLL我仍然可以访问这些变量,我也想知道{{1 }}

2 个答案:

答案 0 :(得分:5)

  

我应该将我的向导编译为DLL还是包?包更容易   无需重新启动即可加载和卸载   IDE(因此更容易调试),但是   他们可以创建单位命名冲突   在IDE中。冲突发生时   命名向导的单位与名称匹配   一个单位在另一个装载   设计时包。在这种情况下,   两个包都无法加载   同时。建议的解决方法   是为所有单位名称添加前缀   带有“唯一”前缀。 GExperts,for   例如,使用“GX_”作为名称前缀   对于它的单位。

来自this非常好的OTA来源:GExperts

答案 1 :(得分:1)

当您访问全局变量时,这些全局变量将是您的DLL的全局变量,而不是主BDS.exe的全局变量。我不确定,但我认为你的DLL将拥有自己的Screen和Application全局变量,如果你在Forms中链接,并且是VCL的核心。

属于IDE本身的东西可以通过Open Tools Api(OTA)访问。我相信你通常不会在你的专家IDE之间共享任何对象,如果你试图这样做,那将是有问题的。你所做的任何绕过OTA的东西都很容易以奇怪的方式破解,特别是在未来版本的IDE中。

依赖性问题当然是不使用基于BPL的软件包的一个重要原因,但我认为更大的原因是要保持工具内部和IDE内部的完全分离。

请记住,DLL目标(如可执行目标)是静态链接的。这是差异的核心。如果您的专家提供的功能仅使用合法的公共文档OTA接口,那么移动到DLL应该没有问题。如果您使用可能与BPL一起使用的一些后门黑客,那么我无法进一步建议您。