質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

メモリリーク

メモリリークは、プログラムファイルがメモリの解放に失敗した時に起こります。

Q&A

解決済

1回答

5188閲覧

MFC と OpenCVを一緒に使うとメモリリークがでるのを回避したい。

YoBit

総合スコア3

MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

メモリリーク

メモリリークは、プログラムファイルがメモリの解放に失敗した時に起こります。

0グッド

1クリップ

投稿2020/09/23 09:51

編集2020/09/23 10:09

VisualStudio2019 C++MFC を使ってソフトを開発しています。
OpenCVは 4.2.0を使っています。

OpenCVをリンクしDebugモードで起動してすぐ終了しただけでメモリリークが大量にでるようになりました。
(起動して終了しただけだと OpenCVのメソッドは全く使っていません)

ネット上に幾つか回避方法があったのでやってみました。

  1. プロジェクトオプションに/DELAYLOAD:"opencv_world420d.dllを設定する

  → 起動/終了ではリークが出ないようになったけど、 OpenCVのメソッドを何か使うと大量にリークが出る。

  ちなみに
cv::VideoCapture v;
と1行定義するだけでも上記と同じだけの大量リークがでます。 v.release();を加えても同じ

  1. いろんなサイトにMFCをスタテックライブラリで とありましたが、

  リンクで既存のソースから大量にエラーが出た為中座。
上手くいっても、exeが大きくなるのでクライアントNGの可能性大

回避方法がありましたらお助けください。。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/09/23 10:48

デバッグバージョン(opencv_world420d.dll)でのみ問題があるのであれば、デバッグ用と割り切り、メモリリークには目をつぶったらいかがでしょう。リリースバージョン(opencv_world420.dll)を使っても起きるのであれば問題ですが。あと、MFCは関係無いのでは。
guest

回答1

0

ベストアンサー

OpenCV のバージョンを 3.x か 2.x に下げてみてください。

投稿2020/09/23 10:12

yuki23

総合スコア1448

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YoBit

2020/09/23 10:48

ありがとうございます。 3.4.11でやってみます。   結果は明日になりますがよろしくお願いします。
yuki23

2020/09/23 10:53

ちなみに私も MFC アプリ開発で、3.1.x でメモリリークが大量に出たので 2.4.x に下げた経験があります。
YoBit

2020/09/23 11:58

明日 2.4.13.6でもやってみます。 ちなみに、 4.2から 3.4に変えただけなんですが、以下のようなリンクエラーが20個ほどでます。 1>src : error LNK2019: 未解決の外部シンボル "void __cdecl cv::normalize(class cv::debug_build_guard::_InputArray const .. 1>src : error LNK2019: 未解決の外部シンボル "void __cdecl cv::minMaxLoc(class cv::debug_build_guard::_InputArray const .. 1>src : error LNK2019: 未解決の外部シンボル "void __cdecl cv::hconcat(class cv::debug_build_guard::_InputArray const &.. 1>src : error LNK2019: 未解決の外部シンボル "void __cdecl cv::vconcat(class cv::debug_build_guard::_InputArray const &.. なにか直す事が必要ですか?
yuki23

2020/09/23 12:17

何も直さずにそのまんまビルドできるわけありません。少なくともリンクするライブラリ名やディレクトリ名は全部直す必要がありますし、クリーンしてビルド(リビルド)する必要があります。
YoBit

2020/09/23 14:20

申し訳ありません上のResは原因が判って削除したのですが、すぐ消されないようでまだ残ったままでした。 3.4.11ではリークが出たのですが、 2.4.13ではリークが出ないので当面 2.4.13で行こうと思います。 明日1日いろいろやって問題なければこのスレは閉じさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問