当我最近的Lazarus Pascal项目在2天前开始发出一个奇怪的CIRCULAR REFERENCE错误时,我感到难过。
我现在删除了项目的所有元素,只打开了LPR文件。当我按F9编译并运行时,我看到同样的错误。所以我怀疑有些旧的输出文件搞砸了。
如何识别和删除它们以便我的项目能够编译?
我正在使用Ubuntu 12.04和Lazarus 1.0.10 + PostgreSQL
万分感谢!
编辑:2013-11-02
我刚从TSUNAMI回来了!我尝试了很多东西,最后格式化了我的操作系统并重新回来了。新项目运作良好。但我对这个问题的旧项目仍然是一样的。它会触发循环引用错误:
stdctrls.pp(9,52) Fatal: Circular unit reference between StdCtrls and LCLIntf
有趣的是,这条线是BLANK。它之前和之后都有评论。我关心的是为什么?我的代码中没有使用LCLIntf。
编辑:2013-11-03
我注意到一件奇怪的事。我有一个项目的LPS文件。它有一些参考StdCtrls的条目。然后我将项目选项更改为NOT使用会话文件。相反,它仅使用LPI文件。但现在我在我的LPI文件中找到了相同的StdCtrls条目。我不知道为什么会这样。我打开了LPI文件的条目,引用了StdCtrls(甚至删除了备份文件)。但每当我在Lazarus打开它时,该条目就会重新进入。
这是我找到并删除的条目。
<Unit29>
<Filename Value="/usr/share/lazarus/1.0.12/lcl/stdctrls.pp"/>
<UnitName Value="StdCtrls"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="52" Y="9"/>
<UsageCount Value="10"/>
</Unit29>
我坚信这是造成循环引用错误的原因。
关于我如何摆脱这个并修复我的项目的任何想法?
谢谢!
答案 0 :(得分:0)
还有其他可能的原因。相互参照可能会导致看似稍纵即逝的行为(取决于编译顺序)。跨单元内联使其聚集。
尝试将其最小化为几个单位,然后使用相互引用(单位使用彼此,直接或作为USES周期的一部分),并首先禁用相关单位中的所有内联。
答案 1 :(得分:0)
尝试使用Shift-F9 - 它将运行 build ,它应该从头开始编译所有文件。如果这仍然无济于事,您可以尝试删除一些编译单元的.ppu
个文件。但是,请注意不要删除编译所需的Lazarus自己的.ppu
。