ねののお庭。

かりかりもふもふ。

openCV3.2使おうと思ったら。

いい加減openCV3.1から3.2に環境直すかとか思い立ってビルドしました。c++です。

世の中は今はvisual studio2017で盛り上がってる(?)けどリリース前だったので2015でビルドしましたけど・・・。

そこでいつも通りソース書いてビルドしようとしたら

 

重大度レベル        コード        説明        プロジェクト        ファイル        行        抑制状態

エラー        C4996        'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

とか怒られた。なにやらflann.hppが悪さをしているらしかった。

普段#include<opencv2\opencv.hpp>でインクルードしてます。個別に書くのめんどくさいし。

opencv3.2になってからopencv.hppの中にopencv2\flann.hppも含まれているらしい。3.1はopencv.hppの中には含まれていなかったらしい。

試しにopencv3,1の環境下で#include<opencv2\flann.hpp>って書いてみたら見事に同じエラー吐かれた。

僕がためした対処法としては

1.flann.hppつかう予定が特にないならopencv.hppからはコメントアウトしてしまう。

2.エラーの書いてあるように#define _CRT_SECURE_NO_WARNINGS を#include<opencv2\flann.hpp>よりも前に書いておく。

どちらかを使えば怒られなくなる。flann.hppを使うときは後者をつかっておけばいいだろう。

 

しかしなぜopencvがfopen_sでなくfopenを使い続けてるのかよくわかりませんね。c++を推奨するってoepncv3から言ってるんだから直せばいいのにとか思ったり。

まぁライブラリ作ってる人たちが直してないくらいだから何か意図があるのか仕様的に仕方のないことなのでしょうけど・・・。

 

ちなみにこのエラー。ノートパソコンでビルドすると怒られてデスクトップだと怒られないから正直よくわかりません。

visual studioの設定とか特に変わらないと思うんですけどね~。