私の一般的な質問は、「どれだけクリーンアップして再コンパイルしても、消えない依存関係が原因で BPL がロードされない」のトラブルシューティング方法です。 更新クリーンに再コンパイルされたシステムを持っていると思うかもしれませんが、Windows とそのファイル システム仮想化の誤機能という逆の奇跡のおかげで、そうではありません。
デザインタイムパッケージ(この場合は という名前dclFsTee.bpl
)を Delphi IDE(高速レポート 4 ティーチャート ラッパー コンポーネント パッケージ)にロードしようとすると、次のようにエラーが表示されます。
The program can't start because tee7100.bpl is missing from your computer. Try reinstalling ...
それtee7100.bpl
は、私が知っているシステム上のどの DCP または DCU ファイルでも参照されていません。しかし、明らかに何かがおかしいので、問題が見つかりません。
すべての Delphi ユーザーは、BPL に関する「コンパイルできない、または読み込まれない」問題に直面しています。何をすべきかと尋ねられたときの一般的なリフレインは、コンピューターをクリーンアップすることです。
しかし、私は今、何時間もかけてコンピューターのクリーンアップを行ってきました。すべてのファイルがコンパイルされている間に、古いバージョンの何かがどこかに隠れていることは明らかです。数日前にこのシステムから削除した TeeChart BPL と、見つけたすべての痕跡。
私が削除した Delphi 2007 の TeeChart の痕跡には、$(BDS)\Lib および $(BDS)\Lib\debug フォルダー内のすべてと、システム上のすべての DCP および BPL フォルダーが含まれています。また、すべての TeeChart ユニット名の dcu ファイルがなくなりました。
道の終わりにたどり着いたら、次に何を試しますか? (ハードドライブをフォーマットし、新しいコンピュータを購入してください。) マジで。私は頭の良い人だと思いますが、1 TB のハード ドライブ、80 以上のフォルダーに実行されるライブラリ パス、およびよく整理されているように見えるソース コード リポジトリを持っていますが、明らかに何かが隠れています。それを見つける。
完全なソース コードを含む TeeChart Standard 2012 を使用しています。私の知る限り、私の開発マシンには、デルファイに同梱されている「ティー チャート tee7100.bpl」バージョンの古い TeeChart BPL または DCP ファイルが含まれていません。
Teechart に付属の "recompile.exe" ウィザードを実行しました。これは、tee.inc ファイルに {$DEFINE x} 宣言を記述した後、MSBuild を実行してパッケージをビルドするように見えます (ソースには 2 つあります)。分布)。
しかし、どういうわけか、パッケージの 1 つへの暗黙的なインポートの 1 つが、再構築されていない古いファイルを描画しているように見えます。そのため、tee7100.bpl をロードしようとします。新しい bpl 名は、tee911.bpl です。
かなり具体的な高速レポートの質問をするのではなく、Delphi での開発中に何十回も直面した一般的な傷の世界の特定の例として言及しているだけです。
高速レポートの詳細のみを提供しているので、これは実際には、依存関係のあるコンポーネント ソース コードまたはパッケージ、またはパッケージのセットを扱うときに Delphi IDE 内で時々直面する一般的な問題の特定のインスタンスであることがわかります。 . コードがビルドされるようにコンピューターをクリーンアップするのは難しい場合があります。
だから、ここに私のDelphiパッケージからパッケージへの依存関係解決の質問があります:
私のコード(問題なくビルドおよびコンパイルされます!)が実際に Delphi IDE にロードされるように、不要になった BPL の暗黙的なロードの問題を見つけたり追跡したりする最も効果的な方法は何ですか。Recompile を実行した結果の BPL ファイルは、適切な DCP ファイルに正しくリンクしているように見え、古い/古い DCP または DCU ファイルは存在しません。たとえば、新しい DCP ファイル名は、tee911.dcp です。
どうにかして、どのパッケージが実際に古くなっているか、.bpl がリンクされているときに何が読み取られ、リンクされ、静的にインポートされているかについて、何らかの考えを得ることができますか? (BPL ファイル用の特別な MAP のようなファイルのように考えているのでしょうか?)
更新これと何時間も格闘し、私が知っているすべてのトリックを使用した後、Windows 7 のファイル仮想化に起因するいくつかの関連する問題を確認しVirtualStore
ていないことに気付きました.つまり、Windows 7 はその上で実行されるプログラムに嘘をついている. それはあなたが望むものではない別のバージョンのファイルを提供します。これはいくつかの点で致命的です。1; BPL を再コンパイルしますが、それはロードされません。私を殺していた BPL は、VirtualStore の一部である SysWow64 フォルダーにありました。仮想ストアは、基本的に、Win7/64 ビットの Delphi 2007 のように、特定の「権限の低い」プログラムである場合にのみ存在するファントム ファイルを表示することに注意してください。現在のユーザー アカウントの SysWow64 VIRTUALSTORE フォルダーにある BPL ファイルを削除するには:
del %HOMEPATH%\AppData\Local\VirtualStore\Windows\SysWow64\*.bpl
... Windows アーキテクチャが嫌いな日もあります。とにかく、私は上記を答えにするつもりはありません.