无法加载包DCP_d5.bpl

时间:2017-05-05 18:59:06

标签: delphi delphi-xe7

我正在将旧的Delphi 5应用程序升级到Delphi XE7。此应用程序基于众多传统软件包,其中一个是DCPcrypt 1.3。 DCPcrypt存在问题:在Delphi XE7 IDE的运行之间神秘地卸载它,我无法在不手动清理注册表的情况下重新安装。重新启动Delphi XE7 IDE时给出的错误消息是"无法加载包DCP_d5.bpl。无法找到指定的模块。是否要在下次加载项目时尝试加载此包?",然后是" Package \ DCP_d5.bpl无法安装,因为已经有另一个具有相同基本名称的包已加载(DCP_d5.bpl)"如果我尝试重新安装它。

有问题的DCPcrypt版本与1999年3月23日的描述捆绑在一起。

Delphi软件包系统是否已更改,导致DCPcrypt丢失并导致这些错误?如果是这样,有人可以建议需要更新的内容吗?

1 个答案:

答案 0 :(得分:0)

显然,必须先卸载依赖于给定程序包的所有程序包,然后卸载,重建并重新安装有问题的程序包,然后重建并重新安装依赖程序包。有时Delphi必须在卸载和重新安装之间关闭。

关于软件包名称,Delphi约定不是在软件包名称中包含Delphi版本,而是将Delphi版本(在本例中为Delphi XE7的210)添加到配置中的LIBSUFFIX。 BPL将在其名称中包含Delphi版本,但引用模块只能指定包名称,并且在构建时将匹配正确的BPL。

在这种情况下,我创建了一个新的XE7包项目,命名为DPCcrypt,并将LIBSUFFIX设置为'210'以表示Delphi XE7。我还在项目中添加了一个DCPcrypt.rc资源文件,其中包含一个名为DCPCRYPT的图标,为包提供一个图标。最后,我在DCPcrypt.pas中为VER280添加了一个条件编译块,将DWORD类型定义设置为longword,因为默认值是longint(Delphi的旧版本没有32位无符号整数),并且在编译时消除了数百条签名与未签名的警告消息。

现在可以加载和安装DCPcrypt项目。 (它的软件包名称是DCPcrypt,但它的BPL名称是DCPcrypt210。)无论出现什么问题,它的负载现在都已消失。