2017-01-03 25 views
5

我遇到了一個模糊的錯誤,並在此發佈解決方案,希望它能幫助其他人解決同樣的問題。Delphi編譯錯誤F2048錯誤的單元格式

我寫用Delphi XE4確保一組Pascal源代碼文件將在舊版本的Delphi編譯一個持續集成(CI)的程序。此CI程序運行一系列批處理文件,每個批處理文件都運行舊版Delphi的命令行編譯器。運行XE編譯器的批處理文件將產生以下錯誤:

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和XE4)。有幾個人報告類似的錯誤,預期和發現的版本是相同的 - 這通常是32位和64位DCU之間的混合,但這不是問題。

只有在CI程序從Delphi XE4 IDE內運行時纔會出現此問題。如果CI程序在IDE外部運行,它可以正常工作。

回答

10

的XE4 IDE將添加又繼承了批處理文件由該程序繼承了幾個環境變量正在調試(在這種情況下,CI)。在批處理文件中運行時,其中一個額外的環境變量會混淆XE編譯器。罪魁禍首是添加的指向XE4 lib目錄的BDSLIB環境變量。

的解決方案是簡單地增加

set BDSLIB=

每個批處理文件的開始。一旦做出這一更改,CI程序就可以在IDE內部和外部成功運行。