我想在Delphi XE3中安装旧包。
我已经进行了修改并且包的构造没问题,但是当我要求安装它时,我有错误:VCL40.pbl缺失。
如何解决此问题并摆脱此错误?
谢谢!
答案 0 :(得分:4)
打开您的包.dpk
文件。您会在vcl40
子句
requires
requires
vcl40;
将vcl40
重命名为vcl
以修复此错误。
Delphi软件包特定于Delphi版本。每个Delphi版本都从相同的代码创建不同的编译包(.bpl
),并且不能在不同的Delphi版本之间共享编译的包。
所有Delphi RTL/VCL/FMX
软件包都有后缀,标记了Delphi版本,并且当您的系统上安装了多个不同版本的软件包时,可以避免冲突。在Delphi 4中,当您的包使用了一些其他包时,您的requires
子句中包含了该版本号。这就是你vcl40
的原因。在更高版本(Delphi 7或6)中,更改了引入包后缀,删除了需要在require子句中编写版本号,仍然允许编译的包具有不同的Delphi版本号。
这就是为什么在Delphi XE3中有vcl
而不是vcl170
的原因。
建议的做法是,您还要为自己的软件包遵循后缀版本编号,以避免冲突。为此,请转到Package Options
- > Description
并将LIB后缀设置为所需版本。它可以设置为您想要的任何东西,但使用与Delphi软件包相同的编号方案和使用170
的XE3也是一种好习惯。
编译带有后缀的包时,生成的.bpl
将被命名为MyPackageName170.bpl
答案 1 :(得分:0)
搜索您尝试安装的BPL的所有副本,包括运行时和设计并删除它们。尝试在XE6上安装软件包时,我遇到了类似的问题,一直想要rtl170.bpl(它是一个XE3 bpl)。原来在c:\ Windows \ SysWOw65中有一个旧版本的运行时BPL。一旦我删除该副本安装就可以了。