5

私はこの 1 週間、この例外を追跡してきました。

状況は次のとおりです。

C# で記述され、Visual Studio 2010 でビルドされたアプリケーションがあります。アプリケーションには、アンマネージ コード ライブラリのラッパーである DLL が含まれています。The unmanaged code is written in C++ and built in Visual Studio 2008. これは、コードが追加のライブラリ (Qt) を参照し、そのコードが WinCE バージョン 5 をターゲットにしているため (フィールドでサポートされているデバイスのために必要)、必要です。

SysInternals の Reflector や Process Monitor などのツールだけでなく、さまざまな依存関係ウォーカー (VS 2008 の依存関係、dependency_walker、Dependz) の使用など、ここで見た提案の多くを試しました。

すべてのツールは、DCOMP.DLL、GPSVC.DLL、および IESHIMS.DLL など、私の環境 (Win 7) では廃止された問題 (Reflector) または古い依存関係を示しません。

デバッガーでは、Managed Wrapper DLL を参照するオブジェクトをインスタンス化するまで、コードをステップ実行できます。オブジェクトのインスタンス化にはステップ インしませんが、すぐに例外をスローします。

Process Explorer (SysInternals から) で、マネージ DLL がロードされ、必要な補助 DLL が表示されます。Process Monitor (SysInternals から) では、問題の時点​​で見つからないメッセージのスタックはありません。失敗するだけです。

この問題を見つけるためのアイデアや考えをいただければ幸いです。

4

2 に答える 2

2

@ Hans Passat - Global Flags に関するヒントをありがとう。

ツールの使用に関する優れたブログ投稿を次に示します「Show Loader Stacks」への Google の参照のほとんどで参照されている gflags.exe プログラムは、Windows Device Driver Development Kit (WinDDK) の一部であり、その投稿で言及されているレジストリ設定を管理します。

「Show Loader Stacks」を使用して実行した結果、アンマネージ DLL にあるはずのシンボルが、使用している DLL にないことがわかりました。

間違ったバージョンの DLL をビルドしていたことが判明しました。これは、ビルド プロセスに対する私の理解が不十分だったことが原因でした (あまりにも多くのバージョンがあまりにも多くの異なる方法でビルドされました)。

于 2013-08-13T16:58:02.267 に答える
0

ジョブの標準ツール: Dependency Walker

于 2013-08-13T08:14:53.230 に答える