私は過去2日間これに頭をぶつけてきましたが、何の進歩も見られないようです...
ある瞬間から次の瞬間まで、DelphiXE2は私のプロジェクトの1つを適切にコンパイルしなくなります。つまり、実際にはエラーなしでコンパイルされますが、実行時に、基本的にメインの「フォーム」(この場合は実際にはデータモジュール)のリソースが見つからないというエラーが発生します。私はすでに、ソース管理から古いバージョンのプロジェクトに戻っていますが、これは間違いなく正常に機能していることがわかっていますが、役に立ちませんでした。それから判断すると、プロジェクトソースではなく、Delphi/IDE自体の内部にあるはずです。しかし、私は単純なテストプロジェクトや他の実際のプロジェクトでも問題を再現することができませんでした...それはこれでのみ発生します。
もう1つの奇妙なことは、XN Resource Explorerで生成されたバイナリを見ると、すべてが正常に見えることです。エラーメッセージに記載されているフォームリソースは実際にはそこにあり、そのままです...
ある時点で、これはIDEにインストールしたエキスパートの1つ(UweのプラットフォームとOIエキスパート、VersionInsightPlus、AndreasのIDEFixPackとDDevExtensions、GExpertsなど)のバグが原因である可能性があると考えていましたが、これらすべての問題を無効にした後でも持続した。
残念ながら、バイナリを実際に実行せず、x64ターゲットのコンパイラの警告とエラーを修正し、更新されたサードパーティツールのビルドイベントを調整することなく、しばらく作業していたため、これがいつ発生し始めたかを正確に追跡することはできません(ローカリゼーションおよびライセンス保護)およびそのようなもの...
他の誰かがこのようなことが起こるのを見たことがありますか?これを特定する方法について他にアイデアはありますか?
プロジェクトに関する詳細:
- これは、Add-In-Expressフレームワーク(つまり、COM-DLL)を使用して構築されたOutlook用のアドインです。
- 「メインフォーム」は
TDataModule
-子孫です-独自の祖先クラスも階層に挿入しました。つまり、「アドインモジュール」は直接継承していませんTadxCOMAddInModule
-カスタム祖先フォームのリソースも存在し、そのままであるように見えます。リソースビューアで確認するときにバイナリを出力します。 - Win32およびWin64プラットフォーム用のランタイムパッケージなしで構築されています。
他の潜在的に関連する詳細について言及しなかったと思われる場合はお知らせください。
更新:
問題のソースを別のマシンに転送しました。興味深いことに、そこでコンパイルしたDLLは問題を示しませんでした-そのマシンでは...元のマシンに転送して呼び出しようとすると、エラーが戻ってきました(これを強調するために:これは正確でした同じDLLが一方のマシンで生成EResNotFound
されますが、もう一方のマシンでは生成されません。もちろん、これを発見したら、逆のテストも実行しました。元のマシンでコンパイルされたDLLは、他のマシンでもエラーなしで動作します...結局、これはDelphiの問題ではないようです...しかし、それではどうでしょうか。
2台のマシンの違い:
- マシン1(問題が発生したもの):Delphi XE2Update4を搭載したWindows7Ultimate English 64bit
- マシン2:Delphi XE2Update3を搭載したWindows7Professional German 32bit
Delphiがインストールされていないことを除いて、最初のマシンとほぼ同じ3番目のマシンでは、両方のマシンで生成されたDLLが問題なく動作します。