openFrameworksというC++向けのマルチメディアライブラリを移植した方が登場しました。
移植した方のサイトはこちら
Developing for iPhone using openFrameworks and ofxiPhone | memo.tv
http://www.memo.tv/ofxiphone
移植元の本家のサイトはこちら
openFrameworks
http://www.openframeworks.cc/
ちなみにopenFrameworksとはC++向けのマルチプラットフォーム向けのアート系(マルチメディア)ライブラリです。
こちらのサイトによると「Processing(またはproce55ing)の設計に影響を受けたC++フレームワーク」とのことです。
openFrameworksをちょっとさわってみた - gnarl、技術メモ
http://d.hatena.ne.jp/gnarl/20070503/1178119448
ビルド方法はこちらのサイトが分かり易いです。
Jeff Crouse » Archive » openFrameworks on iPhone
http://www.jeffcrouse.info/uncategorized/openframeworks-on-iphone/
※svnから関連ソースを落としたあとにこちらのサイトからライブラリをDLし、libsフォルダに解凍する必要があるのに注意して下さい(こちらについても上記サイトに記載があります)。
自分がDLしたバージョンではビルドすると以下のエラーが発生しました。
error: cannot allocate an object of abstract type 'testApp' note: because the following virtual functions are pure within 'testApp': note: virtual void ofxMultiTouchListener::touchDown(float, float, int, ofxMultiTouchCustomData*) note: virtual void ofxMultiTouchListener::touchMoved(float, float, int, ofxMultiTouchCustomData*) note: virtual void ofxMultiTouchListener::touchUp(float, float, int, ofxMultiTouchCustomData*) note: virtual void ofxMultiTouchListener::touchDoubleTap(float, float, int, ofxMultiTouchCustomData*)
こちら仮想関数が定義されていない為に発生しているエラーです。
実際には定義されており引数が異なるために結局は定義されてない扱いになってしまっているようです。
該当の関数(メソッド)を検索し、修正を行います。ここでは例として touchDown() について説明します。
確認すると以下の様な宣言と実装となっており、仮想関数の宣言と異なり x と y の型が int であることが確認できます。
testApp.h
void touchDown(int x, int y, int touchId, ofxMultiTouchCustomData *data = NULL);
testApp.cpp
void testApp::touchDown(int x, int y, int touchId, ofxMultiTouchCustomData *data){
これを以下の様に float に修正。
testApp.h
void touchDown(float x, float y, int touchId, ofxMultiTouchCustomData *data = NULL);
testApp.cpp
void testApp::touchDown(float x, float y, int touchId, ofxMultiTouchCustomData *data){
サンプルとして、以下の様なものが入ってました。