Delphi XE2:使用dcc32.exe编译简单程序失败

Cha*_*ang 9 delphi dcc32 delphi-xe2

安装Delphi XE2后,我尝试命令行编译dcc32.exe来编译一个简单的程序:

program test;

uses SysUtils;

begin
end.
Run Code Online (Sandbox Code Playgroud)

命令行编译器显示错误:

c:> dcc32.exe test.dpr
Embarcadero Delphi for Win32编译器版本23.0版权所有(c)1983,2011 Embarcadero Technologies,
Inc.test.dpr(3)致命:F1026未找到文件:'SysUtils.dcu'

这不会发生在Delphi XE上.

Nat*_*Nat 29

如果您只想使用命令行(不使用dcc32.cfg),您要查找的命令行参数是-NS,以指定要搜索的命名空间...

所以,你会有这样的事情:

dcc32.exe -NSsystem;vcl test.dpr
Run Code Online (Sandbox Code Playgroud)

这应该使编译器在SystemVCL名称空间中查找单元(添加VCL以显示如何附加多个名称空间).

此信息可在Embarcadero论坛中找到.我还没有XE2所以我无法测试它.


Uwe*_*abe 13

由于RTL和VCL中的新命名空间,您必须为编译器指定其他命令行参数.尝试"-NSSystem; System.Win; WinAPI; Vcl; Vcl.Imaging; Data"并根据需要添加其他命名空间.


Dav*_*nan 8

我知道这不是你的直接问题的答案(Uwe和Nat已经涵盖了这个问题),但是使用msbuild构建你会好得多.这样你就可以获取.dproj文件中的所有设置.

构建命令应如下所示:

msbuild test.dproj /t:Rebuild /p:Config=Release
Run Code Online (Sandbox Code Playgroud)

如果要从批处理脚本构建它,则需要确保它能够正确显示msbuild.像这样做:

call "path\to\delphi\installation\bin\rsvars.bat"
msbuild test.dproj /t:Rebuild /p:Config=Release
Run Code Online (Sandbox Code Playgroud)

  • @Marco很难.将IDE用于某些任务和命令行用于其他任务是司空见惯的.它们不是相互排斥的. (3认同)