2012年7月4日水曜日

legacy/compat.hppでwarning C4819

問題

OpenCV2.2や2.3をSVN経由で取得してコンパイルすると、こんな警告が多発。

opencv2/legacy/compat.hpp : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。

こちらのサイトで書かれているとおりファイルを少しいじって適当なエンコードでセーブしなおしても、この問題は治らない。

http://tessy.org/wiki/index.php?C%2FC%2B%2B%A4%CE%A5%C8%A5%E9%A5%D6%A5%EB%BD%B8#e785e7d6

(このサイトではWarningそのものを消す方法が書かれています)

原因

compat.hppの493行目の文字コードがおかしいようです。

/*  shift  - direction ( it's value must be one of the CV_SHIFT_Ö constants )  */

解決策

この行のCV_SHIFT_Oの部分がおかしいけれど、コメント部分なので適当に違うもので上書きしてやればいいのかと思います。 例えば、terapadで開くとなぜかちゃんと?認識してくれますので、そのままエンコードを指定して保存すると治りました。

/*  shift  - direction ( it's value must be one of the CV_SHIFT_O constants )  */

環境

  • VS2008 Pro
  • Windows7 Pro 64bit