【问题标题】:Delphi XE2: Fail using dcc32.exe to compile a simple programDelphi XE2:使用 dcc32.exe 编译简单程序失败
【发布时间】:2011-09-07 07:33:36
【问题描述】:

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

【问题讨论】:

    标签: delphi delphi-xe2 dcc32


    【解决方案1】:

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

    所以,你会得到这样的东西:

    dcc32.exe -NSsystem;vcl test.dpr
    

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

    此信息可在 Embarcadero Discussion Forums 上找到。我还没有 XE2,所以无法测试。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我知道这不是您直接问题的答案(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
        

        【讨论】:

        • 如何创建 dproj?我假设因为他在 cmdline 上编译,所以他不想为此启动 Delphi。
        • @Marco .dproj 是最近 delphi 版本中源代码的一部分。它由 IDE 维护并包含您的项目配置。
        • 我不明白你的意思。它当然是针对标准(GUI)项目的,但对于普通情况,您无需返回命令行。
        • @Marco msbuild 方法仍然调用 dcc32,但它会根据 .dproj 文件中的配置为您制定命令行选项。如果您决定自己驱动 dcc32,那么您将必须维护并行配置选项并保持它们同步。这是错误的秘诀。最好的做法是避免重复和由此不可避免地导致的错误。因此 msbuild.
        • @Marco 几乎没有。将 IDE 用于某些任务而将命令行用于其他任务是司空见惯的。它们并不相互排斥。
        【解决方案4】:

        如果您使用的是 Hewlett Packard PC 或笔记本电脑,您可能需要删除“平台”环境设置(在 Windows 中)。预配置(出厂)的 HP windows7 具有(出于我不知道的原因)环境变量 Platform=AnyCPU。这会影响 Delphi XE2。我昨晚发现了这个讨论,这对我有帮助: https://forums.embarcadero.com/thread.jspa?messageID=387525&tstart=0 没有那个修复,我无法编译任何东西。它会在 VCL 和 FireMonkey 上窒息,不管我的目标是 64 位还是 32 位。

        【讨论】:

        • 这仅适用于编译 .dproj 文件,不适用于 .dpr 文件,它们中没有平台规范。
        猜你喜欢
        • 1970-01-01
        • 2012-12-19
        • 2012-08-15
        • 1970-01-01
        • 1970-01-01
        • 2012-08-06
        • 1970-01-01
        • 1970-01-01
        • 2019-09-11
        相关资源
        最近更新 更多