You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Delphi编译器DCC64.exe编译时尝试使用32位单元库?

DCC64编译Win64 Delphi项目时的F2048错误解决

错误详情

Embarcadero Delphi for Win64编译器版本34.0
版权所有 (c) 1983,2021 Embarcadero Technologies, Inc.
FATestMA64.dpr(1) 致命错误: F2048 单元格式错误: 'C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win32\release\System.dcu' - 期望版本: 34.0, Windows Unicode(x64) 实际版本: 34.0, Windows Unicode(x86)

执行的编译命令

"C:\Program Files (x86)\Embarcadero\Studio\21.0\bin\DCC64.exe" /$D-,Q+,R-,W-,J+ /L /B FATestMA64.DPR  /Ddebuginfo;autotest;notae;vcompnohalt;AllowDRPOForTests;D_64BIT > FATestMA64.logSS.txt

问题背景

  • 已尝试多种编译指令调整,均无法解决错误
  • 相同项目代码和编译命令在另一台机器可正常执行,推测为本地Delphi环境或默认配置差异导致
  • 需求:无需通过-I参数显式指定Win64单元路径,让编译器自动识别正确路径

项目.dproj配置片段

<PropertyGroup>
    <ProjectGuid>{12723496-eaf3-4544-a9he-ebb0432dd32e}</ProjectGuid>
    <MainSource>FATestMA64.dpr</MainSource>
    <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
    <DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
    <DCC_DependencyCheckOutputName>FATestMA.exe</DCC_DependencyCheckOutputName>
    <ProjectVersion>19.2</ProjectVersion>
    <Config Condition="'$(Config)'==''">Release</Config>
    <FrameworkType>VCL</FrameworkType>
    <Base>True</Base>
    <Platform Condition="'$(Platform)'==''">Win64</Platform>
    <TargetedPlatforms>3</TargetedPlatforms>
    <AppType>Application</AppType>
</PropertyGroup>

问题根源

错误核心是64位编译器DCC64在查找系统单元时,优先加载了Win32平台的System.dcu,导致单元架构与目标平台不匹配。

解决步骤

  1. 修正项目配置中的编译器指定
    编辑.dproj文件,将<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>修改为<DCC_DCCCompiler>DCC64</DCC_DCCCompiler>。即使使用命令行编译,项目配置中的编译器设置仍可能影响DCC64的默认路径搜索逻辑。

  2. 检查并修复Delphi环境变量
    确保系统环境变量中:

    • PATH中Delphi 64位工具目录(C:\Program Files (x86)\Embarcadero\Studio\21.0\bin\win64)优先级高于32位目录
    • BDSLIB、BDSINCLUDE等变量指向Win64平台的对应目录(C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\release)
      另一台正常编译的机器大概率是这些环境变量配置正确。
  3. 命令行添加平台强制参数
    在编译命令中加入/P:Win64参数,强制DCC64使用Win64平台的默认搜索路径,无需手动指定-I:

    "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin\DCC64.exe" /$D-,Q+,R-,W-,J+ /L /B /P:Win64 FATestMA64.DPR /Ddebuginfo;autotest;notae;vcompnohalt;AllowDRPOForTests;D_64BIT > FATestMA64.logSS.txt
    
  4. 验证Win64单元完整性
    确认C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\release目录下存在完整的64位编译单元(包括System.dcu),若缺失可重新安装Delphi的Win64组件。


内容的提问来源于stack exchange,提问作者ogglethorp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:45:33