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

问题描述 投票:0回答:2

我在安装第三方库时遇到了以下令人费解的情况,在本例中是Virtual Treeview,我将在此处作为示例使用。

在从INSTALL.txt执行安装过程之后,新组件出现在Delphi的组件面板中,并且可以添加到表单中。

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

'无法解析第xxx行的单位名称“VirtualTrees”,这是列出VirtualTrees的uses语句。

与此症状一致,在源代码编辑器中,(使用)VirtualTrees和子组件声明,用红色波形标记,表示标识符未声明或未解析。

提供的演示项目设置为目标Windows 32.但令人费解的是,如果我将目标切换到Windows 64,它将编译。

安装包括:

  1. 将提供的zip文件解压缩到找到源包的位置。
  2. 在Delphi中,打开项目组:File> Open .... VirtualTreeView.groupproj
  3. 加载后,在项目树中,右键单击VirtualTreesD26.bpl> Install。
  4. 使用“工具>选项>语言> Delphi选项>库>库路径> [...]”将VirtualTreeView的“Source”文件夹添加到库路径

是什么让IDE了解组件,但是无法为Windows 32编译,但是对于Windows 64却成功了?

delphi virtualtreeview delphi-10.3-rio
2个回答
2
投票

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

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

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


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安装(“全局”)设置库路径,但在项目级别存在重叠设置,可按如下方式访问(对于示例“Minimal”项目):

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

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

最后,对于Virtual Treeview,其维护人员Joachim Marder在安装指南中添加了一个注释,以避免此处描述的陷阱。

© www.soinside.com 2019 - 2024. All rights reserved.