レガシ アプリケーションによって動的に読み込まれるネイティブ C DLL があります。この dll の目的は、特定のアプリケーション イベントに基づいてアプリケーションの動作をオーバーライドできるようにすることです。これらのアプリケーション イベントを強化するために、混合モードの C++/CLI dll を介してネイティブ C dll から呼び出す関数を含む C# dll があります。このアーキテクチャを使用するアプリケーションは、Windows 2000 で問題なく動作します。
アプリケーションは Windows XP でも動作しますが、アプリケーションの起動時にネイティブ C dll が読み込まれると、残念ながらアプリケーションがクラッシュします (未処理の例外)。混合モードの dll をロードしようとするとクラッシュするようです。ネイティブ C dll から混合モード dll へのすべての依存関係を削除すると、アプリケーションは正常に起動します。しかし、依存関係が追加されると、クラッシュが発生します。Windows 2000 のコードは、Windows XP で使用されているものと同じです。アプリケーション コードにはアクセスできませんが、ネイティブ C dll コードにはアクセスできますが、初期化が完了する前にクラッシュが発生するため、デバッガーを停止できません。CLR の初期化と OS ローダーの違いに関係していると思われますが、確かではありません。これを解決する方法についての提案を探しています。2を使用してVS2005を使用しています。0 フレームワーク。ご協力いただければ幸いです。
例外とスタック トレースはあまり役に立ちません。
MyApplication.exe の 0x775125f6 で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x775125f6。
775125f6()
user32.dll!7e418734()
[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
user32.dll!7e418816()
user32.dll!7e428ea0()
user32.dll!7e42ce7c()
ntdll.dll!7c90e473()
user32.dll!7e42e389()
...