私はVS 2010でOpenCVを使用しようとしています。私はアマチュアであり、OpenCV wikiから最初のステップを学んでいます。ただし、プロジェクトをデバッグしようとすると、次のエラーが表示されます。
「C:\ Windows\SysWOW64\ntdll.dll」、PDBファイル「C:\ Windows\SysWOW64\kernel32.dll」を検索または開くことができません、PDBファイル「C:\ Windows\SysWOW64\kernellbaseを検索または開くことができません。 dll '、PDBファイルが見つからないか、開けません
これらのファイルは正しいディレクトリにありますが、なぜ開くことができないのですか?問題を解決するにはどうすればよいですか?
まず、次のパラメーターを変更します。
ツール->オプション->デバッグ->シンボル->サーバー->はい
次に Ctrl+F5 驚くべきものが表示されます。
これらはエラーではなくwarningsであると確信しています。プロジェクトは正常に実行されるはずです。
ただし、コンパイラの警告は常に修正する必要があるため、発見できるものを見てみましょう。私はOpenCVにまったく精通していません。あなたがフォローしているwikiチュートリアルにリンクしていません。しかし、問題は、64ビットバージョンのWindows(DLLファイルへのパスにある "SysWOW64"フォルダーからわかるように)を実行していることですが、OpenCVのものはあなたがしようとしていることは、32ビットプラットフォーム用に構築されています。 here のように、CMakeを使用してプロジェクトを再構築する必要があるかもしれません。
より具体的には、リストされているファイルはWindowsシステムファイルです。 PDBファイルには、コンパイルされたコードにステップインしてデバッグするためにVisual Studioが使用するデバッグ情報が含まれています。システムライブラリが独自のコードをデバッグできるようにするために、実際にはPDBファイルは必要ありません。ただし、必要に応じて、システムライブラリの シンボルをダウンロード も使用できます。 [デバッグ]メニューに移動して[オプションと設定]をクリックし、[ソースサーバーサポートを有効にする]が表示されるまで右側のリストボックスを下にスクロールします。そのオプションがチェックされていることを確認してください。次に、左側のツリービューで[シンボル]をクリックし、[Microsoftシンボルサーバー]オプションが選択されていることを確認します。 [OK]をクリックしてダイアログを閉じ、再構築を試みます。
Visual Studio Community Edition 2015
一日中このエラーが発生しています。最後に、[ツール]> [設定のインポートとエクスポート]> [すべてのオプションをリセット]> [一般設定をリセット]に移動して修正しました。
リセットしたら、[ツール]、[オプション]、[デバッグ]、[シンボル]の順に移動し、[Microsoft Symbol Servers]の横のボックスをオンにします。
アプリをデバッグモードで実行すると、さまざまな.dllファイルのシンボルをダウンロードしていることを示すウィンドウが開きます。これを完了します。
完了すると、再び機能するはずです。
同じ問題がありました。他の人から入手したプロジェクトをコンパイルしているときに、正しいスタートアッププロジェクトを設定していないことがわかりました(ソリューションエクスプローラーで目的のスタートアッププロジェクトを右クリックし、「スタートアッププロジェクトとして設定」を選択します)。たぶんこれは助けになるでしょう。
最初のスレッドを参照する/別の可能性VSは、バックグラウンドで実行ファイルを実行しているときにプロセスのpdbファイルを開くまたは見つけることができません。私はmpiexecで作業していて、この問題に遭遇しました。常にタスクマネージャーを確認し、プロジェクトでビルドする実行プロセスを強制終了します。一度それを行うと、デバッグまたは正常にビルドされました。
また、警告を続行しようとすると、ブレークポイントにヒットせず、現在の実行可能ファイルがありません
VS201私がしたようにここにいるユーザー:
Tools -> Options -> Debugging -> Symbols
Cache symbols in this directory:
フィールドが空であることがわかります。自分でパスを参照/入力するか、そのまま[Load all symbols
]ボタンをクリックしてください。 「シンボルキャッシュディレクトリを選択していないため、デフォルトが使用されます」という警告ウィンドウが表示されます。これで、以前は空のパスフィールドにC:\Users\XXXX\AppData\Local\Temp\SymbolCache
が表示されます。 Load all symbols
をもう一度クリックすると、設定されます。 [OK]をクリックして、勤勉のためだけに、ソリューションをきれいにして再構築します。
私は同じ問題に遭遇しました。 C++コードでユニットテストを実行すると、「PDBファイルが見つからないか、開くことができません」というエラーが表示されました。
ログ
Visual Studioで出力ログを見ると、間違ったフォルダーを探していることがわかりました。 WinUnitフォルダーの名前を変更しましたが、WinUnitコード内の何かが古いフォルダー名を使用してPDBファイルを探していました。ハードコーディングされていると思います。
問題の発見
WinUnitファイルを最初にダウンロードして解凍したとき、メインフォルダーは「WinUnit-1.2.0909.1」と呼ばれていました。ファイルを解凍した後、フォルダーの名前を「WinUnit」に変更しました。これは、Visual Studioプロジェクトのセットアップ中に入力しやすいためです。しかし、WinUnitのドキュメントに従ってすべてをセットアップしても、明らかにこれによりPDBファイルを見つけることができなくなりました。
私の修正
フォルダー名を元の名前に戻しましたが、機能します。
奇妙な。
同じ警告が表示されます。 32ビットと64ビットのどちらが問題なのかわかりません。新しいシンボルを読み込んだだけでいくつかの問題は解決しましたが、OpenCVに関する問題はまだ残っています。これは、解決済みの問題と未解決の問題を含む出力の抜粋です。
'OpenCV_helloworld.exe':ロードされた 'C:\ OpenCV2.2\bin\opencv_imgproc220d.dll'、PDBファイルが見つからないか、開かない
「OpenCV_helloworld.exe」:ロードされた「C:\ WINDOWS\system32\imm32.dll」、ロードされたシンボル(ソース情報は削除されます)。
誰かが尋ねる場合に備えて、コードは0を終了しています。
プログラム「[4424] OpenCV_helloworld.exe:Native」はコード0(0x0)で終了しました。
これらのエラーは、プロジェクトをコンパイルする際に権限が不足していることが原因であることがわかっているため、管理者として実行して適切に機能するようにします。
ここでも同じ問題がありましたが、別のソリューションが機能しました。
まず、私は次のことを試しましたが、どれもうまくいきませんでした:
Seanlitowが提案するようにシンボルをロードする
PresentationFrameworkおよびPresentationCoreへの参照の削除/追加
解決策は、コードに行った最後のいくつかの変更をndoにすることでした。チェック済みおよび未チェックのイベント用のラジオボタンとイベントハンドラーをいくつか追加しました。最近の変更を削除した後、すべてがコンパイルされました。次に、exactの変更を元に戻し、すべてを適切にコンパイルしました。私はこれがなぜ機能したのか理解できません-私が考えることができる唯一のことは私のVS Solutionの問題です。とにかく、他の提案が機能しない場合は、最新の変更を元に戻してみてください。注:Visual Studioを閉じて再度開くと、元に戻す履歴が失われます。VSを閉じる前にこれを試してください。
同じ問題がありました。デバッグは、OpenCV実行可能ファイルに付属しているものでは機能しません。独自のバイナリを構築する必要があります。
[デバッグ]-> [オプションと設定]-> [デバッグ]-> [シンボル]でMicrosoft Symbol Serverを有効にします