Delphi 设计时包生成失败-未找到文件:';Graphics.dcu';

Delphi 设计时包生成失败-未找到文件:';Graphics.dcu';,delphi,scope,custom-controls,delphi-xe2,Delphi,Scope,Custom Controls,Delphi Xe2,在DelphiXe2中,我在一对设计/运行时包中有一个控件。起初,一切正常。我已经建造了很多次了。突然,在没有任何警告的情况下,设计时间包开始在我的一个单元中抱怨,当我构建时,Graphics单元丢失了图形是一个标准单位,但在这里找不到。我甚至没有对这个单元做任何改动,据我所知,任何可能影响这个单元的改动 以下是本单元顶部(界面)的用途: uses Graphics, ColorConv, Classes, Dialogs, ZLib; 正如你所看到的,这是一个非常简单的单元,我只对这个项

在DelphiXe2中,我在一对设计/运行时包中有一个控件。起初,一切正常。我已经建造了很多次了。突然,在没有任何警告的情况下,设计时间包开始在我的一个单元中抱怨,当我构建时,
Graphics
单元丢失了<代码>图形是一个标准单位,但在这里找不到。我甚至没有对这个单元做任何改动,据我所知,任何可能影响这个单元的改动

以下是本单元顶部(界面)的用途:

uses
  Graphics, ColorConv, Classes, Dialogs, ZLib;
正如你所看到的,这是一个非常简单的单元,我只对这个项目做了非常简单的更改。是什么让它开始无缘无故地抱怨这件事

奇怪的是,如果我安装了它,它就可以正常工作,只是无法构建


代码太多了,我不想把整件事都贴出来。

胡乱猜测:它需要
Vcl.
名称空间前缀?

工具->选项->环境选项->德尔福选项->库中检查你的路径,特别是
库路径
浏览路径
设置。我安装XE2的默认设置(不包括第三方组件和我自己的东西添加的默认设置):

图书馆:

c:\program files (x86)\embarcadero\rad studio\9.0\lib\Win32\release;c:\program files (x86)\embarcadero\rad studio\9.0\Imports;C:\Users\Public\Documents\RAD Studio\9.0\Dcp;c:\program files (x86)\embarcadero\rad studio\9.0\include;
浏览:

$(BDS)\SOURCE\VCL;$(BDS)\source\rtl\common;$(BDS)\SOURCE\RTL\SYS;$(BDS)\source\rtl\win;$(BDS)\source\ToolsAPI;$(BDS)\SOURCE\IBX;$(BDS)\source\Internet;$(BDS)\SOURCE\PROPERTY EDITORS;$(BDS)\source\soap;$(BDS)\SOURCE\XML;$(BDS)\source\db;$(BDS)\source\Indy10\Core;$(BDS)\source\Indy10\System;$(BDS)\source\Indy10\Protocols;$(BDS)\source\fmx;$(BDS)\source\databinding\components;$(BDS)\source\databinding\engine;$(BDS)\source\databinding\graph;$(BDS)\source\fmi;$(BDS)\source\data;$(BDS)\source\data\ado;$(BDS)\source\data\bde;$(BDS)\source\data\cloud;$(BDS)\source\data\datasnap;$(BDS)\source\data\dbx;$(BDS)\source\data\dsnap;$(BDS)\source\data\Test;$(BDS)\source\data\vclctrls;

另外,由于您是XE2新手,您可能希望检查(在IDE之外)是否定义了
PLATFORM
的环境变量。一些PC制造商(HP是一个特别的例子)在他们的计算机上定义了这个变量,它会干扰IDE的要求。(IDE使用
PLATFORM
作为用于不同平台的路径中的临时环境变量,如果IDE外部有预定义的路径,则会失败。)您可以打开命令提示符,键入
SET PLATFORM
并按Enter键进行检查。如果有一个预定义的,它可能会导致各种难以跟踪的问题;你可以在我遇到的每台机器上安全地移除它。(右键单击
我的电脑
开始->电脑
,选择
属性
高级系统设置
环境变量

如果项目中有多个图形声明(或其他VCL单元,如:控件、窗体…),则可以将VCL命名空间添加到项目中
详情如下:


就是这样-我不熟悉名称空间前缀:DYou不需要在代码中添加
Vcl.
前缀,如果您确保
Vcl
包含在项目选项中的
单元范围名称列表中。@PresleyDias XE2介绍了Firemonkey以及其他一些新功能。通过这些更改,Embarcadero有必要添加这些前缀,以便您可以定义要使用的单位集。例如,
Vcl.Graphics
vs
FMX.Graphics
(我不知道这是否是一个真正的比较,但只是一个例子)@Jerrydoge,好的,知道前缀的意思了,很好的例子很好的提示,但其他答案解决了我的问题:D@Downvoter:请解释这是如何“无用”?+1。您肯定不是唯一一个处于相同情况的人,当其他人迁移到XE2时,这肯定会对他们有所帮助。
project menu-->options-->delphi compiler->>add in "unit scope names" value "Vcl"