Delphi编译错误F2048坏单位格式

Dav*_*awk 5 delphi

我遇到了一个模糊的错误,并在此发布解决方案,希望它能帮助其他人遇到同样的问题.

我正在使用Delphi XE4编写持续集成(CI)程序,以确保在旧版本的Delphi下编译一组pascal源文件.此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之间的混合,但这不是问题.

只有在Delphi XE4 IDE中运行CI程序时才会出现此问题.如果CI程序在IDE外部运行,则可以正常工作.

Dav*_*awk 10

XE4 IDE添加了几个由正在调试的程序(在本例中为CI)继承的环境变量,这些变量又由批处理文件继承.在批处理文件中运行时,其中一个额外的环境变量会混淆XE编译器.罪魁祸首是添加的BDSLIB环境变量,它指向XE4 lib目录.

解决方案是简单地添加

设置BDSLIB =

到每个批处理文件的开头.完成此更改后,CI程序将在IDE内部和外部成功运行.