新安装的库的Delphi 10.x“无法解析单元名称”

时间:2019-04-18 08:22:31

标签: delphi virtualtreeview delphi-10.3-rio

在安装第三方库(在本例中为Virtual Treeview)时遇到以下令人困惑的情况,在此我将作为示例。

按照INSTALL.txt的安装过程进行操作后,新组件将出现在Delphi的组件面板中,并可将其添加到表单中。

但是,构建提供的示例项目之一,在这种情况下,“最小”失败,说:

“无法在第xxx行解析单元名称“ VirtualTrees””,这是在其中列出VirtualTrees的uses语句。

与该症状一致的源代码编辑器中,(使用)VirtualTree和辅助组件声明用红色花键标记,表示未声明或未解析的标识符。

提供的演示项目设置为以Windows 32为目标。但是令人困惑的是,如果将目标切换到Windows 64,它将进行编译。

安装包括:

  1. 将提供的zip文件解压缩到您找到源软件包的位置。

  2. 在Delphi中,打开项目组:File> Open...。VirtualTreeView.groupproj

  3. 一旦加载,在项目树中,右键单击VirtualTreesD26.bpl>安装。

  4. 使用以下命令将VirtualTreeView的“源”文件夹添加到库路径中 “工具>选项>语言> Delphi选项>库>库路径> [...]”

什么让IDE知道该组件,但是对于Windows 32却编译失败,而对于Windows 64却成功了?

2 个答案:

答案 0 :(得分:2)

每个目标都有自己的库路径。您已将VT路径添加到Win64目标,但需要对Win32目标执行相同的操作。

或者,从Win64目标搜索路径中删除VT路径,然后将其添加到适用于所有项目的目标中,然后它们将被其他项目继承。

在选项对话框中,有一个下拉控件,允许您指定要将设置应用到的目标。

答案 1 :(得分:0)

简短的答案是库路径设置不正确。并感谢David Heffernan指出了这一点。

但是如何以及为什么?

我错过的关键是“库设置”对话框捕获了适用于每个不同平台目标的不同路径集。因此,在“库设置”对话框的顶部,有一个“选定平台”下拉列表,用于控制下面的设置将应用于哪个平台。

为了能够构建Win 32 VCL应用程序,需要专门为Windows 32设置库路径,这意味着在执行将路径添加到Virtual TreeView的Source目录的步骤之前,将Selected Platform下拉菜单设置为Windows 32。

回顾起来很明显,也许这篇SO帖子将有助于将“无法解析单位名称”与该潜在原因联系起来。

关于发生这种情况的原因,有几点需要补充。

a)来自较早版本的Delphi的用户在处理多个平台之前可能会熟悉此“库设置”对话框,因此无法意识到它现在具有“选定平台”功能。

b)在全新安装的Delphi 10.3上,每次打开“库设置”对话框时,“选定平台”下拉菜单都将恢复为Windows 64。它似乎既不与当前打开的项目的平台协调,也没有记住上一次设置的内容。因此,很容易会误以为它没有设置为您假设的平台,除非您知道要明确看待。

知道此功能设置整个Delphi安装的库路径(“全局”)可能也很有用,但是在项目级别存在重叠的设置,可按以下方式访问(例如“最小”项目示例) :

项目树,ProjectGroup1> Minimal.exe>构建配置>右键单击>(“项目选项”对话框),构建> Delphi编译器>目标(所有配置或特定目标)>“搜索路径”插槽。

Delphi显然将“搜索路径”与“工具”>“ ...”>“库设置”>“库路径”合并。

最后,对于Virtual Treeview,其维护者Joachim Marder已在安装说明中添加了注释,以避免此处所述的陷阱。