我在安装第三方库时遇到了以下令人费解的情况,在本例中是Virtual Treeview,我将在此处作为示例使用。
在从INSTALL.txt执行安装过程之后,新组件出现在Delphi的组件面板中,并且可以添加到表单中。
但是,构建一个提供的示例项目,在这种情况下“Minimal”失败,说:
'无法解析第xxx行的单位名称“VirtualTrees”,这是列出VirtualTrees的uses语句。
与此症状一致,在源代码编辑器中,(使用)VirtualTrees和子组件声明,用红色波形标记,表示标识符未声明或未解析。
提供的演示项目设置为目标Windows 32.但令人费解的是,如果我将目标切换到Windows 64,它将编译。
安装包括:
是什么让IDE了解组件,但是无法为Windows 32编译,但是对于Windows 64却成功了?
每个目标都有自己的库路径。您已将VT路径添加到Win64目标,但需要对Win32目标执行相同操作。
或者,从Win64目标搜索路径中删除VT路径,然后将它们添加到适用于所有项目的目标,然后由其他项目继承。
在选项对话框中,有一个下拉控件,允许您指定要应用设置的目标。
简短的回答是库路径设置不正确。感谢David Heffernan指出这一点。
但是如何以及为什么?
我遗漏的关键部分是“库设置”对话框捕获了适用于每个不同平台目标的不同路径集。因此,在“库设置”对话框的顶部,有一个“选定平台”下拉列表,用于管理将应用于下方设置的平台。
为了能够构建Win 32 VCL应用程序,需要专门为Windows 32设置库路径,这意味着在执行添加Virtual TreeView的Source目录路径的步骤之前,将Selected Platform下拉列表设置为Windows 32。
回想起来很明显,也许这篇SO帖子有助于将“无法解决单位名称”与这一潜在原因联系起来。
关于为什么会发生这种情况,还有一些问题需要补充。
a)来自旧版本Delphi的用户在处理多个平台之前可能熟悉此“库设置”对话框,因此没有意识到它现在具有“选定平台”功能。
b)在我安装Delphi 10.3时,每次打开“库设置”对话框时,“选定平台”下拉列表将恢复为Windows 64。它似乎既没有与当前开放项目的平台协调,也没有记住你最后设置的内容。所以很容易错过它没有设置到你假设的平台,除非你知道要明确看。
知道虽然此功能为整个Delphi安装(“全局”)设置库路径,但在项目级别存在重叠设置,可按如下方式访问(对于示例“Minimal”项目):
项目树,ProjectGroup1> Minimal.exe>构建配置>右键单击>(项目选项对话框)构建> Delphi编译器>目标(所有配置或特定目标)>“搜索路径”插槽。
Delphi显然将“搜索路径”与工具> ...>库设置>库路径合并。
最后,对于Virtual Treeview,其维护人员Joachim Marder在安装指南中添加了一个注释,以避免此处描述的陷阱。