ナクナイ

勉強用の備忘録

[cocos2dx][Xcode][C++] Undefined symbols for architecture i386 とか linker command failed with exit code 1 でエラー

cocos2dx で、タップを検知したいと思い、ヘッダーファイルに下記の記述を行いました。

// タッチ開始時
virtual bool onTouchBegan(cocos2d::Touch* pTouch, cocos2d::Event* pEvent);

しかしビルドすると

f:id:tamulapin:20140328175504p:plain

というエラー。。。


エラー内容でぐぐってみると、
プログラミング雑記: Undefined symbols for architecture i386

Cocos2dxで"Undefined symbols for architecture i386:"が発生した場合の対処法 - たけぞうBLOG

「clang: error: linker command failed with exit code 1」というエラーへの対処 - Action Script書きの日記

Cocoaの日々: ld: library not found for -lz.1.2.3 と出たら

Xcode4.4にアップデートしたら「linker command failed with exit code 1」エラー?! | 個人で作るiPhoneアプリ制作体験記

とかとか、いろいろ見つかったけどぜんぜん解決せず。

結局、ヘッダーファイルに宣言をするだけではだめで、cpp ファイルにて定義まで行わないとエラーになるらしいです。下のように記述し、無事解決しました。

bool TouchTest::onTouchBegan(Touch* pTouch, Event* pEvent) {
    return true;
}


C++ の関数のプロトタイプ宣言というものは、それを記述しただけではエラーになるっていうことなのかな??
初心者丸出し。ちくしょう。。(T-T)