Happy My Life

日常とか技術とか

Android NDKで線形代数ライブラリEigenを使う

ndroid NDKで使える線形代数ライブラリ(平たく言うとベクトルや行列演算などの2D,3Dグラフィックスの演算を行うライブラリ)を色々調べていたのだが、そのなかでもEigenの使い勝手がよさそうなので試しに使っているところ。OpenGLとの親和性も高く、使い勝手がよさそうなので今後使っていこうかと思っている。

Eigenの特徴は、テンプレートライブラリであること。つまり、ライブラリのビルドが不要で、ヘッダファイルを取り込むだけでプロジェクトで使える。これだとAndroid NDKのような特殊な環境(でもなくなってきた?)でもすんなり使える。

ただ、Android NDKで使える様にするにはちょっとした設定が必要なので、そのメモを兼ねて記録を残しておく。ここでは、Eigen 3.1.2、NDKr8eを使った。

ダウンロード~インストール

Eigenの公式サイトから、たどってEigen 3.1.3をダウンロードする。

ダウンロードしたファイルを展開した後は、その中にあるEigenフォルダをプロジェクトのjniフォルダにコピーする。これだけ。

$ tar xvf eigen-eigen-xyz.tar.gz2
$ cp -a eigen-eigen-xyz/Eigen ~/workspace/project_foo/jni

設定

このEigenは、Complexライブラリが必要なので、初期設定のプロジェクトではビルドできない。そのため、Application.mkファイルで、Complexライブラリが利用できるSTLportやlibstdc++を指定する必要がある。

ここでは、STLport(静的ライブラリ)をリンクするよう指定した。

APP_STL := stlport_static

あとは、Android.mkファイルでEigenライブラリを参照するように設定する。

LOCAL_C_INCLUDES += $(LOCAL_PATH)

これでEigenが使える様になった。

余談

ダウンロードしたEigen 3.1.3には、Eigen2とEigen3のサンプルコードが混在してるので参考にするときは注意しないといけない…。

Android NDK ネイティブプログラミング
出村 成和
秀和システム
売り上げランキング: 70,146