Delphi F2051单元JclUnitVersioning使用不同版本的System.Contnrs.TObjectList.Remove编译

Delphi F2051单元JclUnitVersioning使用不同版本的System.Contnrs.TObjectList.Remove编译,delphi,delphi-xe2,jvcl,jedi-code-library,Delphi,Delphi Xe2,Jvcl,Jedi Code Library,我正在将一个Delphi2项目迁移到RAD Studio XE2 当我尝试编译时,我得到 [DCC致命错误]MyUnit.pas(9):F2051单元JclUnitVersioning是使用不同版本的System.Contnrs.TObjectList.Remove编译的 在下一行: unit MyUnit; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

我正在将一个Delphi2项目迁移到RAD Studio XE2

当我尝试编译时,我得到

[DCC致命错误]MyUnit.pas(9):F2051单元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;

{...}
unitmyunit;
接口
使用
窗口、消息、系统工具、类、图形、控件、窗体、对话框、,
StdCtrls、DB、DBTables、TB97、ExtCtrls、Grids、DBGrids、Vcl.Mask、JvExMask、,
Vcl.DBLookup,

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

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

想象一下,你有一辆车,有人升级了发动机,将其从V6改为V8。现在,以前为你的发动机服务的人回来,试图找到V6排气歧管连接的位置。它已经不在了,它已经移动了。因为新发动机的形状已经冻结(请跟我在一起!),您的服务技术人员只需返回给您(客户)并说,“对不起,我很困惑,我无法继续,我放弃”。这大概就是此错误消息的意思

清理它有几种方法;对于您来说,确保100%从
.pas
文件编译,并且没有包含
.dcu
文件的库文件夹,这可能是一件简单的事情。当然,这不是很理想,因为库路径的全部目的是包含预编译的dcu文件“库”


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

刚才Delphi 2010和XE3存在相同的问题(迁移时都在同一台PC上)

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


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

转到
Project/Options
菜单项。在“项目选项”对话框中,检查您是否在
Search Path
部分中配置了正确的路径,以及是否有指向以前JCL安装的文件夹的路径,将其删除并尝试重建项目。如果在该部分中找不到此类目录,请尝试删除o转到
View/Project Manager
,右键单击您的项目项,尝试使用
Clean
,然后使用
Build
。您还有更多的垃圾,仅仅卸载和重新安装并没有清理。卸载并没有清除您当前用户的注册表设置,也没有格式化您的硬盘drive,所以可能有JCL命名的DCU文件在周围的某个地方,这会把你搞得一团糟。还有更多的“状态”这里是要解决的问题。请看我的答案。在您的驱动器中搜索
JclUnitVersioning.dcu
。太好了!我安装了JCL和JVCL,因为我认为它们可以解决我遇到的问题,但可能它们是使用不同版本的IDE编译的,安装人员只是复制了dcu,而没有使用我的IDE.Ma编译源代码ny谢谢!二进制安装程序仅适用于Delphi试用版的用户。(在你发布的链接上写得很清楚!)很高兴你解决了这个问题。但如果将来你使用了一个奇怪的安装程序,请注意问题中的这一点,否则我们将假设你使用了常规安装程序。