【问题标题】:F2051 Unit JclUnitVersioning was compiled with a different version of System.Contnrs.TObjectList.RemoveF2051 Unit JclUnitVersioning 使用不同版本的 System.Contnrs.TObjectList.Remove 编译
【发布时间】:2012-04-10 13:35:21
【问题描述】:

我正在将一个 Delphi 2 项目迁移到 RAD Studio XE2。

当我尝试编译时,我得到了

[DCC 致命错误] MyUnit.pas(9): F2051 Unit JclUnitVersioning 是用不同版本的 System.Contnrs.TObjectList.Remove 编译的

在下一行:

unit MyUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DB, DBTables, TB97, ExtCtrls, Grids, DBGrids, Vcl.Mask, JvExMask,
  Vcl.DBLookup,
  JvToolEdit,  {<-- error here}
  TB97Ctls;

{...}

我尝试卸载并重新安装 RAD Studio、JCL 和 JVCL,但没有任何变化。

更新使用的是二进制 Jedi installer from A.Hausladen(仅用于 Delphi 试用版)。

【问题讨论】:

  • 转到Project / Options 菜单项。在“项目选项”对话框中,检查您是否在Search Path 部分中配置了正确的路径,如果有一些指向您之前安装的 JCL 的文件夹,请删除它们并尝试重建项目。如果您在该部分中没有找到此类目录,请尝试转到 View / Project Manager 并右键单击您的项目项并尝试使用 Clean 然后 Build
  • 你还有更多的垃圾,仅仅卸载和重新安装并没有清理干净。卸载并没有清除您的 Delphi 当前用户的注册表设置,也没有格式化您的硬盘驱动器,因此有可能在某处存在以 JCL 命名的 DCU 文件,这让您感到困惑。这里还有更多“状态”需要解决。看我的回答。在您的驱动器中搜索 JclUnitVersioning.dcu 的副本。

标签: delphi delphi-xe2 jvcl jedi-code-library


【解决方案1】:

您可能有旧的 DCU 文件需要重建或删除,或者您的项目或库路径内容不一致。 (查找不在正确 JCL 库文件夹中的名为 JclUnitVersioning.dcu 的文件,并将其删除。正确的库文件夹命名为 jcl\lib\d7jcl\lib\d16,具体取决于您的 delphi 版本号)

这通常意味着您的项目既可以访问包含预编译 DCU 文件的库路径(或项目搜索路径)中的目录,也可以访问某些源单元(.pas 文件) ,并且依赖于其他单元的一个或多个单元是在与现在不同的时间编译的,具有多个版本的公共单元。我希望我能给你画一幅画。

假设您有一辆汽车,有人升级了发动机,将其从 V6 改为 V8。现在,以前为您的发动机维修过的人回来并试图找到 V6 排气歧管的连接位置。它已经不在了,它被移动了。由于新发动机已冻结在当前形状(留在我这里!),您的服务技术人员只是回到您(客户)并说,“对不起,我很困惑,我不能继续,我放弃”。这条错误信息大致就是这个意思。

可以通过多种方式进行清理;确保 100% 从 .pas 文件编译,并且根本没有包含 .dcu 文件的库文件夹,这对您来说可能是一件简单的事情。当然,这并不理想,不是吗,因为库路径的全部目的是包含 DCU 文件的预编译“库”。

因此,我建议您进行清理(删除所有 DCU 文件)并从源代码重建所有组件包(您确实有用于此目的的批处理文件吗?),然后查看项目的搜索路径,然后库路径,以查看两者仅包含您认为它们应该包含的文件夹。

【讨论】:

  • 太棒了!我已经使用these installers 安装了 JCL 和 JVCL,因为我认为它们会解决我遇到的问题,但也许它们是使用不同版本的 IDE 编译的,安装程序只是复制了 DCU,而没有使用我的 IDE 编译源代码。非常感谢!
  • 二进制安装程序仅适用于 Delphi 试用版的用户。 (它在您发布的链接上写得很清楚!)很高兴您解决了它。但是,如果将来您使用了奇怪的安装程序,请在问题中注明,否则我们会假设您使用的是常规安装程序。
【解决方案2】:

在 Delphi 2010 和 XE3 上遇到了同样的问题(迁移时都在同一台 PC 上)。

在重新编译我的项目和 JCL 项目(我的 PC 上的安装程序 bat 文件错误)几个小时后,发现问题是在 tools/options/Delphi Options/libraries 中声明目录的顺序。

将它们全部取出,添加版本特定目录(例如 lib\D14、lib\D17\Win32),然后添加所需的其他 JCL 子目录(即一次一个,直到使用 JCL 构建项目)

【讨论】:

    猜你喜欢
    • 2016-07-18
    • 2020-11-20
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2016-05-08
    • 1970-01-01
    相关资源
    最近更新 更多