プラグインを使用するプログラムを作成しています。残念ながら、プラグイン フレームワークの動的リンクにより、RTL と VCL がプロジェクト EXE から強制的に BPL バージョンに移動され、デバッグ情報が有効になりません。
そこで、プラグインに静的にリンクするテスト フレームワークを構築して、コードをトレースしながら自分が何をしているかを実際に確認できるようにしました。しかし今、再コンパイルしようとするたびに、「ユニット turbu_skills は異なるバージョンの turbu_database.GDatabase でコンパイルされました」というエラーが表示されます。
このエラーは以前にも見たことがありますが、RTL ライブラリや VCL ライブラリなど、変更すべきではないものを変更したときだけです。自分のコードでそれを行う理由がわかりません。turbu_skills ユニットと turbu_database ユニットは、どちらも私が書いたユニットです。GDatabase はグローバル シングルトン変数であり、そのクラス定義は何週間も変更していません。どちらのユニットにも何も触れていなくても、再コンパイルを引き起こす変更により、このエラーが発生します。
フル ビルド (SHIFT-F9) を実行すると、正しくコンパイルされます。しかし、ユニット (任意のユニット) でSPACEを押して F9 を押すと、再びエラーが発生します。どうすれば停止できますか? これはメイン アプリでは発生せず、テスト フレームワークでのみ発生します。
編集:すべてのユニットのソースがあります。DCU や同様のファイルを削除しても役に立ちません。プロジェクト全体を別のコンピューターにコピーし、すべての DCU を削除して、そこでビルドしても役に立ちません。プログラムのレイアウトとコンパイラーの間に客観的で再現可能な競合があり、それを取り除きたいと思っています。
ソースはhttp://www.turbu-rpg.com/downloads/Turbu_source_setup.exeで見つけることができます。JVCL がすでにインストールされている Delphi 2009 が必要です。残りはインストーラー パッケージが処理します。ソースコードを入手できると、誰かがこれを追跡するのに役立つかもしれません。問題がどこにあっても、それは私を超えているので、私は確かにそう願っています。この問題は、testing.exe と turbu.groupproj の turbu.exe で見つけることができます。
編集 2: これは別のクロスユニット ジェネリックの問題であることが判明しました。ぐら。回避策をコーディングすることができました。ジェネリックの問題がすぐに修正されることを願っています。