ページ 11

mingwでopencvを使ったプログラムをコンパイルしたい

Posted: 2013年7月18日(木) 23:09
by じゅーん
今、windowsでopnecvの開発環境を整えたいと思い、以下のページを参考にしてmingwでコンパイルできる環境を作ろうとしています
http://d.hatena.ne.jp/Inuneco/20110714/p1


上のwebページで紹介されていたインストーラーがリンク切れしていたり、色々困ったのですが、http://sourceforge.net/projects/opencvlibrary/代わりに個々からダウンロードしてなんとかやりました


そしていざコンパイルとしようとすると、上記のページにはこのような方法が書かれていました
$ gcc test.c -o test.exe -lcxcore210 -lcv210 -lhighgui210 -lcvaux210 -lml210
今回質問した理由はこのコマンドのせいです。mingwと言えば、windowsようだと思っていたのに、これではlinuxでは無いのでしょうか???
これではもちろんコンパイルできなかったので、windowsのコマンドプロンプトでコンパイルする方法を教えて下さい


また、上記のページとopencvのバージョンの違いのせいか、よく分からない点がいくつかあります
大きくは、
・C:\OpenCV2.1\libなんてディレクトリはない
・includeというディレクトリがたくさんあって、どれを指定すればいいのかわからない

この二点です。こちらも合わせてよろしくお願いします。



(ちなみにコンパイルしようとしているソースはこんなものです)

コード:

#include <cv.h>
#include <highgui.h>

int main () {
	cvNamedWindow ("test", CV_WINDOW_AUTOSIZE);
	cvWaitKey (0);
	cvDestroyWindow ("test");
	return 0;

}
(ちなみにlibファイルを指定せずにコンパイルするとこんなふうになっています)
C:\Users\<USERNAME>\desktop>g++ test.cpp -I C:\opencv\build\include
C:\Users\<USERNAME>\AppData\Local\Temp\ccxaymMo.o:test.cpp:(.text+0x1e): undefined re
ference to `cvNamedWindow'
C:\Users\<USERNAME>\AppData\Local\Temp\ccxaymMo.o:test.cpp:(.text+0x2a): undefined re
ference to `cvWaitKey'
C:\Users\<USERNAME>\AppData\Local\Temp\ccxaymMo.o:test.cpp:(.text+0x36): undefined re
ference to `cvDestroyWindow'
collect2: ld ヘXe[^X 1 ナIケオワオス


よろしくお願いします

Re: mingwでopencvを使ったプログラムをコンパイルしたい

Posted: 2013年7月18日(木) 23:17
by じゅーん
追記です
C:\Users\<USERNAME>\desktop>g++ test.cpp -I C:\opencv\build\include c:\opencv\build\x86\mingw\lib\libopencv_core246.dll.a C:\opencv\build\x86\mingw\lib\libopencv_highgui246.dll.a
こうやって書くと問題なくコンパイルが通りました!なんということでしょう。
ただ、絶対パスを一々指定しなければ、no such file or directoryとかいうよく見るエラーを吐いてきます。
こいつを何とかするためにgccにライブラリのパスを教えておいてやりたいのですが、どうすればいいのでしょうか?

Re: mingwでopencvを使ったプログラムをコンパイルしたい

Posted: 2013年7月18日(木) 23:19
by beatle
じゅーん さんが書きました:そしていざコンパイルとしようとすると、上記のページにはこのような方法が書かれていました
$ gcc test.c -o test.exe -lcxcore210 -lcv210 -lhighgui210 -lcvaux210 -lml210
今回質問した理由はこのコマンドのせいです。mingwと言えば、windowsようだと思っていたのに、これではlinuxでは無いのでしょうか???
MinGWはLinuxぽい環境をWindows上に構築するソフトウェアですので、Linuxぽくて正常なのですが…

gccにライブラリディレクトリを教える方法ですが、-Lオプションを試してみたらいかがでしょうか。

Re: mingwでopencvを使ったプログラムをコンパイルしたい

Posted: 2013年7月18日(木) 23:25
by みけCAT
"C:\OpenCV2.1\lib"の代わりに、"c:\opencv\build\x86\mingw\lib"をLIBRARY_PATHに追加すればいいのではないでしょうか?

Re: mingwでopencvを使ったプログラムをコンパイルしたい

Posted: 2013年7月19日(金) 23:00
by じゅーん
返信が一日遅れてしまい、申し訳ありません

>beatleさん
beatle さんが書きました:
じゅーん さんが書きました:そしていざコンパイルとしようとすると、上記のページにはこのような方法が書かれていました
$ gcc test.c -o test.exe -lcxcore210 -lcv210 -lhighgui210 -lcvaux210 -lml210
今回質問した理由はこのコマンドのせいです。mingwと言えば、windowsようだと思っていたのに、これではlinuxでは無いのでしょうか???
MinGWはLinuxぽい環境をWindows上に構築するソフトウェアですので、Linuxぽくて正常なのですが…

gccにライブラリディレクトリを教える方法ですが、-Lオプションを試してみたらいかがでしょうか。
Linuxっぽいものなのですか?どうやら私の勉強不足のようで‥‥
また-Lオプションも特に効いてくれませんでした


>みけCATさん
みけCAT さんが書きました:"C:\OpenCV2.1\lib"の代わりに、"c:\opencv\build\x86\mingw\lib"をLIBRARY_PATHに追加すればいいのではないでしょうか?
追加して再起動も試しましたが、うまくいきませんでした


どうにも私の勉強不足が原因のようです、もうちょっと勉強してこようと思います
一応コンパイルは通ったので、このトピックはこれで解決にさせていただきます
回答してくださってどうもありがとうございました