0

C ライブラリの機能の一部をラップするマネージ C++ クラスを含む DLL を作成しました。マネージ C++ DLL を参照する C# テスト プロジェクトがあります。C# プロジェクトでアンマネージ デバッグがオンになっており、C++ DLL プロジェクトで Debugger Type=Mixed を設定しています。ここに私が持っているものの一種の図があります:

C# コンソール アプリ -> ラッパー DLL -> マネージド C++ クラス -> アンマネージド C++ メソッド (ラッパー DLL に実装) -> C 静的ライブラリ

マネージ ラッパー クラスと DLL のアンマネージ メソッドの両方にブレークポイントを設定しています。デバッグを開始すると、すべてのブレークポイントが赤く点灯したままになります。マネージド ラッパー クラスのブレークポイントはヒットしますが、アンマネージド メソッドのブレークポイントはヒットしません。奇妙なことに、アンマネージ メソッドのいずれかにステップインしようとすると、デバッガーはアンマネージ C++ メソッドを「スキップ」し、C 静的ライブラリの関数に直接進みます。その時点で、コール スタックには [External Code] が表示され、アンマネージ C++ メソッドが表示されるはずです。

ここで何が起こっているのかについてのアイデアはありますか?

4

3 に答える 3

0

EXE を実行してから、デバッグ | に移動してみてください。VS でプロセスにアタッチします。

EXE を選択し、

「接続先」で「マネージド」と「ネイティブ」を選択

それは私が以前に使用したもので、問題なく動作するようです...

于 2012-04-27T10:13:54.783 に答える
0

私の場合 (VS2015_SP1) Debugger-Option を使用する必要があります:
Debug->Options->General->Use native Compatibility Mode

于 2016-02-12T10:08:31.257 に答える
0

正しい場所から dll を読み込んでいますか? これは、[モジュール] ビューで確認できます。

于 2012-04-26T19:33:21.560 に答える