Delphi编译错误 F2048 坏的单元格式。

5

我遇到了一个晦涩的错误,并在这里发布解决方案,希望能帮助其他遇到同样问题的人。

我正在使用Delphi XE4编写持续集成(CI)程序,以确保一组Pascal源文件可以在旧版本的Delphi下编译。该CI程序运行一系列批处理文件,每个批处理文件都运行旧版Delphi的命令行编译器。运行XE编译器的批处理文件产生了以下错误:

F2048坏单元格式:“c:\ program files(x86)\ embarcadero \ rad studio \ 11.0 \ lib \ Win32 \ release \ System.dcu”-预期版本:22.0 ... 找到版本:25.0

请注意,预期和找到的版本不同(在此情况下为XE和XE4)。有几个人报告了类似的错误,其中预期和找到的版本相同-这通常是32位和64位DCU之间的混淆,但这不是这里的问题。

只有当CI程序从Delphi XE4 IDE内部运行时才会出现此问题。如果在IDE外运行CI程序,则正常工作。

1个回答

10
XE4集成开发环境添加了几个环境变量,这些变量被正在调试的程序(在本例中为CI)继承,而这些程序又会被批处理文件继承。其中一个额外的环境变量会在批处理文件中运行XE编译器时引起混淆。罪魁祸首是BDSLIB环境变量,它指向XE4的lib目录。
解决方案很简单,只需在每个批处理文件的开头添加如下内容:

set BDSLIB=

完成此更改后,CI程序无论在IDE内部还是外部都可以成功运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接