C ライブラリの機能の一部をラップするマネージ C++ クラスを含む DLL を作成しました。マネージ C++ DLL を参照する C# テスト プロジェクトがあります。C# プロジェクトでアンマネージ デバッグがオンになっており、C++ DLL プロジェクトで Debugger Type=Mixed を設定しています。ここに私が持っているものの一種の図があります:
C# コンソール アプリ -> ラッパー DLL -> マネージド C++ クラス -> アンマネージド C++ メソッド (ラッパー DLL に実装) -> C 静的ライブラリ
マネージ ラッパー クラスと DLL のアンマネージ メソッドの両方にブレークポイントを設定しています。デバッグを開始すると、すべてのブレークポイントが赤く点灯したままになります。マネージド ラッパー クラスのブレークポイントはヒットしますが、アンマネージド メソッドのブレークポイントはヒットしません。奇妙なことに、アンマネージ メソッドのいずれかにステップインしようとすると、デバッガーはアンマネージ C++ メソッドを「スキップ」し、C 静的ライブラリの関数に直接進みます。その時点で、コール スタックには [External Code] が表示され、アンマネージ C++ メソッドが表示されるはずです。
ここで何が起こっているのかについてのアイデアはありますか?