ライブラリOpenCVをコンパイルできない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dic

ライブラリOpenCVをコンパイルできない

#1

投稿記事 by dic » 16年前

ライブラリOpenCVを利用しようと思い
下のURLにあるソースコードをコンパイルしましたが、
http://gihyo.jp/dev/feature/01/opencv/0002?page=2
ライブラリ内のエラーで、どう対処すればいいか分かりません
インクルードのパスなどは通してます

サンプルで、使用されてるコンパイラはMicrosoft Visual C++ 2005
なのですが、私が使用しているコンパイラはMicrosoft Visual C++ 6.0
だからでしょうか?

下がコンパイルエラーです、多いので似たようなコンパイルエラーは省いてます

--------------------構成: hoge - Win32 Debug--------------------
コンパイル中...
main.cpp
c:\program files\opencv1.2\include\opencv\cxcore.hpp(173) : error C2535: '__thiscall cv::Allocator<U>::cv::Allocator<U>(const class cv::Allocator<U> &)' : メンバ関数は、すでに定義または宣言されています。
c:\program files\opencv1.2\include\opencv\cxcore.hpp(171) : 'Allocator<_Tp>::Allocator<_Tp>' の宣言を確認してください。
c:\program files\opencv1.2\include\opencv\cxcore.hpp(189) : コンパイルされたクラスのテンプレートのインスタンス化 'cv::Allocator<_Tp>' の参照を確認してください
c:\program files\opencv1.2\include\opencv\cxcore.hpp(203) : error C2989: 'DataDepth<class ?? ::_Tp *>' : このテンプレート クラスはすでに非テンプレート クラスとして定義されています。
c:\program files\opencv1.2\include\opencv\cxcore.hpp(203) : error C2988: 認識できないテンプレートの宣言または定義です。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(106) : error C2039: 'min' : 'std' のメンバではありません。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(106) : error C2873: 'min' : シンボルを using 宣言の中で使用することはできません。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(131) : error C2667: 'saturate_cast' : 4 個のオーバーロード関数があいまいで最適な変換ができません。 (新しい機能 ; ヘルプを参照)
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(131) : error C2668: 'saturate_cast' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(133) : error C2908: 明示的な特殊化; 'unsigned char __cdecl cv::saturate_cast(unsigned int)' はプライマリ テンプレートから既にインスタンス化されています。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(133) : error C2039: 'min' : 'std' のメンバではありません。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(133) : error C2661: 'min' : 2 個の引数を持つオーバーロードされた関数はありません。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(135) : error C2908: 明示的な特殊化; 'unsigned char __cdecl cv::saturate_cast(float)' はプライマリ テンプレートから既にインスタンス化されています。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(135) : error C2667: 'saturate_cast' : 4 個のオーバーロード関数があいまいで最適な変換ができません。 (新しい機能 ; ヘルプを参照)
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(135) : error C2668: 'saturate_cast' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(311) : error C2059: 構文エラー : ''template<''
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(312) : error C2065: 'T2' : 定義されていない識別子です。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(320) : error C2143: 構文エラー : ';' が '{' の前に必要です。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(320) : error C2447: グローバルスコープで中カッコ ({) が見つかりましたが、対応する関数ヘッダーがありません。
c:\program files\opencv1.2\include\opencv\cxoperations.hpp(328) : error C2954: テンプレートの定義はネストできません。
エラーが 100 個を超えました。コンパイルは中断されます。
cl.exe の実行エラー

hoge.exe - エラー 102、警告 0

Justy

Re:ライブラリOpenCVをコンパイルできない

#2

投稿記事 by Justy » 16年前


>私が使用しているコンパイラはMicrosoft Visual C++ 6.0 だからでしょうか?

 持ってないので正確なことは言えませんが、その可能性が高いです。
 
 MSVC6は今の C++の規格が固まる前後の製品なので、標準ライブラリの名前空間だとか
templateまわりだとか、for内の変数スコープだとかが、今のと異なります。

 MSVC8以降を使うか、ソースが公開されているので、ちまちま書き換えるか
しかないと思います

dic

Re:ライブラリOpenCVをコンパイルできない

#3

投稿記事 by dic » 16年前

Visual C++ 9.0 をインストールしてみましたところ
無事コンパイルできました
コンパイラも日進月歩ですね
Justyさん回答ありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る