0

私の最近の Lazarus Pascal プロジェクトが 2 日前に奇妙な CIRCULAR REFERENCE エラーを出し始めたとき、私は困惑しました。

プロジェクトのすべての要素を削除し、LPR ファイルのみを開きました。F9 を押してコンパイルして実行すると、同じエラーが表示されます。そのため、台無しになっている古い出力ファイルがいくつかあると思われます。

プロジェクトがコンパイルされるように、それらを特定して削除するにはどうすればよいですか?

Lazarus 1.0.10 + PostgreSQL で Ubuntu 12.04 を使用しています

どうもありがとう!

編集: 2013-11-02

津波から帰ってきました!私は多くのことを試し、最終的にOSをフォーマットし、新たに戻ってきました. 新しいプロジェクトはうまくいきます。しかし、問題のある私の古いプロジェクトはまだ同じです。循環参照エラーが発生します。

stdctrls.pp(9,52) Fatal: Circular unit reference between StdCtrls and LCLIntf

面白いことに、その行は空白です。その前後にコメントがあります。私の懸念はなぜですか?コードのどこにも LCLIntf を使用していません。

編集: 2013-11-03

私は奇妙なことに気づきました。プロジェクト用のLPSファイルがありました。StdCtrls への参照を含むいくつかのエントリがありました。次に、プロジェクト オプションをセッション ファイルを使用しないように変更しました。代わりに、LPI ファイルのみを使用します。しかし、LPI ファイルに同じ StdCtrls エントリが見つかりました。なぜこれが起こっているのかわかりません。StdCtrls を参照して LPI ファイルのエントリを開きました (バックアップ ファイルも削除しました)。しかし、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>

これが循環参照エラーの原因であると強く信じています。

これを取り除き、プロジェクトを修正する方法について何か考えはありますか?

ありがとう!

4

2 に答える 2

0

Shift-F9 を使用してみてください - buildが実行され、すべてのファイルを最初からコンパイルする必要があります。それでも問題が解決しない場合は、.ppuコンパイルされたユニットであるいくつかのファイルを削除してみてください。.ppuただし、コンパイルに必要なLazarus 独自の を削除しないように注意してください。

于 2013-11-02T07:31:04.057 に答える
0

他にも考えられる原因があります。相互参照は、一時的な動作のように見える可能性があります (コンパイルの順序によって異なります)。クロスユニットのインライン化はそれを悪化させます。

それをいくつかのユニットに最小化してから、相互参照 (直接または USES サイクルの一部として相互に使用するユニット) を試し、関連するユニットのすべてのインライン化を最初に無効にします。

于 2013-10-29T20:48:07.767 に答える