mjn*_*mjn 5 delphi compiler-construction namespaces
Delphi 2007和2009中的编译器(dcc32.exe)有一个选项
-NS<namespaces> = Namespace search path
Run Code Online (Sandbox Code Playgroud)
这与项目选项对话框中的编译器选项'Default namespace'和'Namespace prefixes'有关吗?搜索"路径"听起来像一个文件夹(目录)名称,所以我不确定这个选项有什么用处.
此设置的目的是提供用于搜索不完全限定的单位名称的前缀列表。例如,在较旧的 Delphi 版本中,您的设备的界面部分中通常会有类似这样的内容:
uses
Windows, SysUtils, Classes;
Run Code Online (Sandbox Code Playgroud)
这将指示编译器在尝试查找未知标识符时使用Windows
,SysUtils
和单元。Classes
在更现代的 Delphi 中,它的工作方式大致相同,只是单位不再称为Windows
or SysUtils
,而是称为WinApi.Windows
or System.SysUtils
。如果您仅使用Windows
或SysUtils
,则不会找到它们。
但是,当然,没有人愿意将所有源代码重写为新的单位名称。Delphi 编译器提供了一个选项,用于指定在未找到确切的单元名称时默认搜索的名称空间。在上面的例子中,我们可以将默认命名空间设置为WinApi;System
,然后所有单元都会被正确找到,因为Delphi编译器会尝试搜索Windows
(未找到),WinApi.Windows
(已找到 - 转到下一个单元),SysUtils
(未找到) ), WinApi.SysUtils
(未找到), System.SysUtils
(找到 - 转到下一个单元), ..., System.Classes
(找到 - 找到所有必需的单元)。
如果您使用 GUI,通常不会处理这个问题,因为命名空间列表是项目文件的一部分,并且提供了合理的默认值。msbuild.exe
如果您使用项目文件从命令行构建应用程序,则同样适用。但如果您使用dcc*.exe
和*.dpr
,那么您必须提供您想要自动应用的命名空间 - 这就是该选项的用途-NS
。在我们的示例中,您可以使用-NSWinApi;System
.
归档时间: |
|
查看次数: |
1990 次 |
最近记录: |