0

コードを Delphi 2007 から XE7 に移行しています。私のプログラムは、レイトバインディングパッケージの方法を使用しています。そこで、「ランタイム パッケージとのリンク」オプションを使用してアプリケーションをコンパイルします。2007年からずっとこの方法を使っていました。

しかし、XE7 では、同じパッケージ構造が原因:

「ユニット X は異なるバージョンの Y.Txyz でコンパイルされました」というエラー メッセージ。

私のパッケージの1つにユニットX。Yユニットもライブラリパッケージに入っています。相性は良さそうです。XE7 でこのエラーが発生するのはなぜですか? 私は次の方法を試しました:

  • .dcu ファイルをクリアしました。
  • パッケージで Build as Needed オプションを開きます。
  • すべてのパッケージとアプリケーション ファイルをビルドします。

コンパイラはいくつかのエラーを渡しますが、「..別のバージョンでコンパイルされた..」タイプのエラーを別の場所で繰り返します..

この問題についてはよくわかりません。XE7 のロジックに変更はありますか? よろしくお願いします

4

1 に答える 1

0

私は問題に焦点を当て、XE7 と Delphi2007 のいくつかの相違点に気付きました。

  • *.dcu ファイルのコンパイラ検索。何らかの方法で作成された *.dcu ファイルの複数のバージョンがある場合、パッケージの 1 つよりも「異なるバージョンでコンパイルされたユニット」エラーが発生する可能性があります。

  • ソース パッケージが "Rebuild as Needed" として宣言されている場合、ソース パッケージを使用して他のパッケージをコンパイルするときに、ユニットを再度コンパイルして新しい dcu ファイルを生成します。そのため、代わりに「Explicit Rebuild」にチェックを入れます。

  • 共通の dcu パスを作成し、すべてのパッケージの「ユニット出力ディレクトリ」で宣言しました。

于 2015-05-06T09:39:21.687 に答える