在运行时加载单个包

时间:2016-12-30 10:42:05

标签: delphi

我们在应用程序中使用了铬浏览器组件https://github.com/hgourvest/dcef3。我们最近对此进行了更新,并且今天发现它在Windows 2008计算机和旧版本上运行时会出现访问冲突。

一旦启动应用程序,就会发生此AV。使用此组件的部分只是应用程序的一小部分。

我希望解决方案是在运行时而不是设计时加载该包,但动态链接运行时包的选项似乎是一个全有或全无的决定。我们希望在exe内部保留所有其他包。

对此有什么解决方案?有没有办法告诉Delphi它应该只在需要时加载该包?这样,在Windows 2008服务器上运行的用户可以继续使用应用程序的其他部分。

1 个答案:

答案 0 :(得分:0)

您可以像DLL一样动态加载包。您不能使用RTTI,但可以从Package中加载和执行过程。

您可以使用以下代码加载包:

H := LoadPackage('RESTAS.BPL');

使用以下代码访问方法:

@resta := GetProcAddress(H, 'Resta');

与DLL类似。 Here you have a complete explanation与delphi中的包加载(BPL)和库(DLL)相关,具有不同的配置(有和没有运行时包)。它是西班牙语,但你可以使用自动翻译,查看代码和下载样本。