2017-01-03 15 views
5

私は曖昧なエラーに遭遇し、同じ問題を抱えている誰かを助けることを期待してここに解決策を投稿しています。DelphiコンパイルエラーF2048不正なユニットフォーマット

私はDelphi XE4を使用して継続的インテグレーション(CI)プログラムを作成しており、古いバージョンのDelphiで一連のパスカルソースファイルがコンパイルされるようにしています。このCIプログラムは、古いDelphiバージョンのコマンドラインコンパイラを実行する一連のバッチファイルを実行します。予想見つかったバージョンは(この場合はXEとXE4で)異なること

F2048 Bad unit format: 'c:\program files (x86)\embarcadero\rad studio\11.0\lib\Win32\release\System.dcu' - Expected version: 22.0 ... Found version: 25.0

注:XEコンパイラを実行バッチファイルは、次のエラーを生成しました。何人かの人が、予想されたバージョンと見つかったバージョンが同じで、同じエラーが報告されています。これは通常、32ビットと64ビットのDCUの混在ですが、ここでは問題はありませんでした。

この問題は、CIプログラムがDelphi XE4 IDEから実行されている場合にのみ発生します。 CIプログラムがIDEの外部で実行されている場合、正常に動作します。

答えて

10

XE4 IDEには、デバッグ中のプログラム(この場合はCI)が継承し、バッチファイルによって継承されるいくつかの環境変数が追加されています。これらの余分な環境変数の1つは、バッチファイルで実行するときにXEコンパイラを混乱させます。原因は、追加されたBDSLIB環境変数で、XE4 libディレクトリを指しています。

ソリューションは、単にバッチファイルのそれぞれの先頭に

set BDSLIB=

を追加しました。この変更が行われると、CIプログラムはIDEの内部と外部の両方で正常に実行されます。

関連する問題