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

9
安装完 Delphi XE2 后,我尝试使用命令行编译器 dcc32.exe 编译一个简单的程序:
program test;

uses SysUtils;

begin
end.

命令行编译器显示错误:

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

4个回答

30

如果你只想使用命令行(不使用dcc32.cfg),那么你需要的命令行参数是-NS,用于指定要搜索的命名空间...

因此,你会有类似这样的内容:

dcc32.exe -NSsystem;vcl test.dpr

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

此信息来源于Embarcadero Discussion Forums。我还没有XE2,所以无法进行测试。


13
由于RTL和VCL中的新命名空间,您需要向编译器指定额外的命令行参数。尝试使用“-NSSystem;System.Win;WinAPI;Vcl;Vcl.Imaging;Data”,并根据需要添加其他命名空间。

9

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

构建命令应该如下所示:

msbuild test.dproj /t:Rebuild /p:Config=Release

如果你正在从批处理脚本中构建这个项目,你需要确保它可以找到正确的 msbuild。做法如下:

call "path\to\delphi\installation\bin\rsvars.bat"
msbuild test.dproj /t:Rebuild /p:Config=Release

1
你怎么创建dproj文件?我猜因为他想要在命令行编译,所以不想启动Delphi。 - Marco van de Voort
1
@Marco .dproj是最近Delphi版本中源代码的一部分。它由IDE维护,并包含您的项目配置。 - David Heffernan
1
我非常清楚dproj-msbuild系统的工作原理。我的观点是,询问命令行应用程序的人可能根本不会首先在Delphi中打开项目。 - Marco van de Voort
3
@Marco Hardly。在某些任务中使用IDE,在其他任务中使用命令行是很普遍的。它们并不是互相排斥的。 - David Heffernan
1
我只是假设如果有人提出一个命令行问题,他想要一个命令行的答案。这是我对这个主题的最后一条评论。 - Marco van de Voort
显示剩余3条评论

-1
如果您正在使用惠普电脑或笔记本电脑,则可能需要删除“平台”环境设置(在Windows中)。出厂预配置的HP Windows7具有(原因不明)环境变量Platform = AnyCPU。这会影响Delphi XE2。昨晚我找到了这个讨论,对我很有帮助: https://forums.embarcadero.com/thread.jspa?messageID=387525&tstart=0 如果没有这个修复程序,我将无法编译任何东西。它会在VCL和FireMonkey上窒息,无论我是针对64位还是32位。

这仅适用于编译 .dproj 文件,而不适用于 .dpr 文件,因为它们没有平台规格说明。 - Remy Lebeau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接