2017-09-05 3 views
-1

C++ DLLを使用するC#プロジェクトがあります。私はDLLをデバッグしようとしていますが、Visual Studioは "PDBがイメージと一致しません"ということを私のDLLに報告しています。C#プロジェクトで使用されるC++ DLLのデバッグ

  • C++ DLLは、DLLと完全なPDBの両方を生成する同じソリューションで私によって構築されています。
  • C++ DLLは、C#プロジェクトの依存関係としてマークされています。
  • C#プロジェクトは、既存のものよりも新しいDLLファイルを出力ディレクトリにコピーするように設定しています。
  • C#プロジェクトで「ネイティブコードのデバッグを有効にする」が有効になっています。

モジュールウィンドウの下にあるDLLのシンボル読み込み情報には、正しいPDBが見つかりましたが、「PDBはイメージに一致しません」という文句があります。これはVisual StudioによるDLLの側に構築されたPDBですが。

このエラーを検出すると、人々は何がうまくいかないかを尋ねるだけですが、回答は決して提供されません。

+1

このような不思議なことが起こったとき、私は次のことを行います:1.ソリューションの下の名前とdllのすべてのインスタンスをPATHで検索し、すべて削除します。すべてのdll pdbファイルを検索して削除してください。デバッグ対象の構成(x64/Debugなど)を使用してdllプロジェクトを再ビルドします。 2. C#プロジェクトを再ビルドし、再度デバッグを試みます。ほとんどの場合、私が使用していたとは異なるバージョンのdllを使用することによってエラーが発生しました。 –

+0

別のプロジェクトにはこの問題はありません。 – lsalamon

答えて

0

問題は、DLLのコピーでした。

私はDLLを「Existing Item」としてC#プロジェクトに追加しました。これは明らかにプロジェクトディレクトリにファイルをそのままコピーします。 DLLをC#プロジェクトのディレクトリにコピーするために、ポストビルドイベントをC++プロジェクトに追加する必要がありました。それが新しい場合、DLLは出力ディレクトリにコピーされます。

関連する問題