ogglethorp
ogglethorp

Reputation: 21

why is delphi compiler DCC64.exe trying to use 32 bit unit library?

Error when attempting to compile delphi project on command line using DCC64.EXE:

Embarcadero Delphi for Win64 compiler version 34.0 Copyright (c) 1983,2021 Embarcadero Technologies, Inc. FATestMA64.dpr(1) Fatal: F2048 Bad unit format: 'C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win32\release\System.dcu' - Expected version: 34.0, Windows Unicode(x64) Found version: 34.0, Windows Unicode(x86)

The command line being run is:

"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

I have tried several different compile directives to no avail. The same project and compile command works successfully on a different machine (environment or Delphi default differences?).

Note: I am hoping not to have to add 'C:\Program Files (x86)\Embarcadero\Studio\21.0\lib\win64\release' explicitly in the path option (-I).

The project .dproj file contains:

<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>

Upvotes: 1

Views: 394

Answers (2)

ogglethorp
ogglethorp

Reputation: 21

This ended up being due to a script that was updating the \Embarcadero\Studio\21.0\bin\dcc64.cfg file incorrectly (not a fan but can't always control what you inherit). Once that was fixed then the compiler used the correct library path.

Upvotes: 0

AWirthK2
AWirthK2

Reputation: 86

Yes, you must specify the pathes. Better you put all them together into a dcc64.cfg. See also dcc64 /h.

Upvotes: 1

Related Questions