7

マネージ C++ クラス ライブラリ ("Rem") から呼び出すネイティブ C DLL がいくつかあります。「Rem」クラス ライブラリには、1 つのネイティブ C++ クラス (api) と 1 つのマネージ C++ クラス (API) があります。

マネージ クラス (API) は、現時点では C# コンソール アプリケーションから呼び出されます (後で Web アプリケーションで使用されます)。

デバッグ時には、ネイティブ コードを問題なくステップ実行できます。

私の問題は、デバッグ中に、ローカルで宣言された単純な型以外の変数の値が表示されないことです。

関数パラメーターはデバッガーで使用できません。ウォッチとして追加しようとすると、「エラー: 識別子 'schema_name' がスコープ外です」と表示されます ('schema_name' は変数名です)。

構造体は、クイック ウォッチとウォッチ ウィンドウの両方で、値 "{...}" を表示するだけです。 ここに画像の説明を入力

構造体のフィールドにウォッチを追加しようとすると、「エラー: 'entryList.numItems' が存在しません」という値が表示されます。

私が試したこと:

  • Managed C++ でコンソール アプリケーションを作成して、それからデバッグしようとしましたが、同じことです。

  • Tools->Options->Debugging->General->Managed C++ Compatibility Mode のチェックを外してみましたが、コードにまったくステップ インできませんでした (ブレークポイント用にシンボルがロードされていません)。

  • C# コンソール アプリ プロジェクトで、[プロパティ] -> [デバッグ] に移動し、[ネイティブ コードのデバッグを有効にする] にチェックを入れました (チェックを外しました)。

  • C++ クラス ライブラリで、Properties->Debugging->Debugger Type に移動し、"Mixed"、"Native"、"Managed"、"Auto" を試しました。

私が間違っていることに関する提案はありますか?

4

1 に答える 1

2

Visual Studio 2012 Update 2 を使用していると思います。その場合、これは Update 2 の既知のバグです。

https://connect.microsoft.com/VisualStudio/feedback/details/783004/children-cannot-be-evaluated-on-c-cli-after-vs2012-update-2

ただし、Update 2 をアンインストールする「回避策」を実行すると、このバグ レポートに示されているように Visual Studio が壊れたままになります (はい、Update 2 は壊れています)。

https://connect.microsoft.com/VisualStudio/feedback/details/785396/uninstalling-vs2012-update-2-and-repair-of-vs-results-in-atl-files-missing

Update 2 を使用していない場合、これは正しい答えではないかもしれませんが、Update 2 を使用してまさにこの問題を経験している他の人を助けることができます。

于 2013-04-25T08:41:12.273 に答える