codeBlocksでofxOpenCvを使うときのリンクエラー対処

Pocket
LINEで送る

codeBlocksでofxOpenCvをアドオンに追加して使うときにリンクエラーでハマったのでメモ。
【環境】
OS : Win7
codeBlocks : 13.12
oF : v0.8.4

まずはWorkSpaceのプロジェクト名を右クリックして、「Build options」をクリック。
ウィンドウがあがるので、2番目のタブの「Linker settings」を選択。
ここに、addons/ofxOpenCv/libs/opencv/lib/win_cb フォルダ配下の共有ライブラリファイルを追加する。

ここでちょっとハマりました。
ただ、追加しただけでは参照の依存関係が解消されないので、以下の順でやる必要がある。

libopencv_objdetect231.a
libopencv_legacy231.a
libopencv_cablib3d231.a
libopencv_features2d231.a
libopencv_imgproc231.a
libopencv_core231.a

以降は読みこんだ順で大丈夫!
link

ちなみにヘッダはこんな感じで読みこんでます。エラーが出ない程度にざっくりやったので無駄に読みこんでいる可能性ありです。
path

実際に実行してみます。ソースは簡単なcolorImageをdrawするもの。

#pragma once

#include "ofMain.h"
#include "ofxOpenCv.h"

class ofApp : public ofBaseApp{
	public:
		void setup();
		void update();
		void draw();

		void keyPressed(int key);
		void keyReleased(int key);
		void mouseMoved(int x, int y);
		void mouseDragged(int x, int y, int button);
		void mousePressed(int x, int y, int button);
		void mouseReleased(int x, int y, int button);
		void windowResized(int w, int h);
		void dragEvent(ofDragInfo dragInfo);
		void gotMessage(ofMessage msg);

                ofVideoGrabber  cam;
		ofxCvColorImage colorImg;
};
#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
    cam.initGrabber(320, 240);
    colorImg.allocate(320, 240);
}

//--------------------------------------------------------------
void ofApp::update(){
    cam.update();
    colorImg.setFromPixels(cam.getPixels(), 320, 240);
}

//--------------------------------------------------------------
void ofApp::draw(){
    colorImg.draw(0, 0, 320, 240);
}

実行結果!
exe

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください