ページ 11

VC++2019でOpenCVを使うときのデバッグモードとリリースモードの違い

Posted: 2022年6月13日(月) 12:19
by しーびーX
動画再生系の処理をさせたくて
VideoCapture video(FilePath.c_str());
としているのですが、VC++デバッグモードだと正常(思った通り)に処理してくれるのですが、
リリースモードだとmsvcrt.dllでアクセス違反になってしまいます。
ファイル名(FilePath)はデバッグモードとリリースモードに違いは見当たりませんでした。
ブレークポイントを付けてステップインしていくと「ソースが見つかりません」というタブが開かれて

>cap.cppが見つかりません
>現在の呼び出し履歴のフレームのソースを表示するには、cap.cpp を見つける必要があります

と書いてあります。
別に配布とかするつもりはなく、個人で使用するソフトなのでデバッグモードでもいいのですが、
モヤモヤして納得いかないし、後学のため対処方法を知りたいのです。

なぜこのようなことになるのでしょうか?

Re: VC++2019でOpenCVを使うときのデバッグモードとリリースモードの違い

Posted: 2022年6月14日(火) 18:51
by あたっしゅ
東上☆海美☆「
https://docs.microsoft.com/ja-jp/cpp/bu ... w=msvc-170
リリース ビルド作成時によくある問題 | Microsoft Docs(ja)

viewtopic.php?t=13714
debug ではバッチリ。release したら不具合が発覚。 - プログラマ専用SNS ミクプラ(ja)

https://okwave.jp/qa/q652709.html
VC++ で Debug モード OK で、Release モードのみでエラーが出る?| OKWAVE(ja)

Re: VC++2019でOpenCVを使うときのデバッグモードとリリースモードの違い

Posted: 2022年6月14日(火) 22:35
by しーびーX
ありがとうございます。
今回の場合はライブラリの問題でしょうか?
VideoCapture video(Set_FilePath.c_str());
この部分をコメントアウトすると何事もなく全て動きます。
また、Set_FilePathは他の処理でも使用しているのですが問題使えてます。

Re: VC++2019でOpenCVを使うときのデバッグモードとリリースモードの違い

Posted: 2022年6月15日(水) 09:54
by usao
全く役に立たない話かもしれませんが…


(1) lib の指定を間違っていないか?

Debug版のlibのファイルタイトル末尾には d が付いていて,Release版にはついていない.
適切なものを使わないと問題が起きる.


(2) OpenCVは Release/Debug 共にご自身の環境でビルドしたものですか?

どっかから拾ってきたままの dll を使っているような場合,
自身でビルドした物を使っても同じことが起こるのか?…というのを試してみてもよいかも.

Re: VC++2019でOpenCVを使うときのデバッグモードとリリースモードの違い

Posted: 2022年6月15日(水) 12:16
by しーびーX
>Debug版のlibのファイルタイトル末尾には d が付いていて,Release版にはついていない.
適切なものを使わないと問題が起きる.

ありがとうございました。
プロファイルでデバッグとリリースで分けてたつもりでしたが、
再確認したところリリースでもdありのlibファイルになってました。