About
Contents
STL
Android
Eigen
enchant.js
Firefox OS
OpenGL
OpenGL ES 2.0
pukiwiki
UE4
Unity
Windows Phone
Xamarin
Materials Link
その他
PR
STL
Android
Eigen
enchant.js
Firefox OS
OpenGL
OpenGL ES 2.0
pukiwiki
UE4
Unity
Windows Phone
Xamarin
Javaで作成された簡単な関数を、JNIを利用してC言語で実装してみます。
// 加算した値を返す。 protected int addValue(int value1, int value2) { return value1 + value2; }
これをC言語に置き換えてみます。
プロジェクトのディレクトリにjniフォルダを作成します。この中にソースコードとメイクファイルを配置していきます。
#include <jni.h> // 加算した値を返す。 jint Java_com_example_addapp_MainActivity_addValue( JNIEnv* env, jobject thiz, jint value1, jint value2 ) { return value1 + value2; }
関数名が長くなっていますがこれは “Java_パッケージ名_クラス名_メソッド名” というメソッド名の規約があるためです。これを間違えていると実行時にエラーになります。
-Android用のmakefileを追加します LOCAL_PATH := $(call my-dir) #変数の初期化 include $(CLEAR_VARS) #出力するモジュール名 LOCAL_MODULE := calcvalue #モジュールを構成するC/C++のソースコード LOCAL_SRC_FILES := calcvalue.c #共有モジュールを出力 include $(BUILD_SHARED_LIBRARY)
// ロードするモジュールを指定 static { System.loadLibrary("calcvalue"); } // 加算した値を返す。(nativeをつけることでJNI関数であることをを宣言する) protected native int addValue(int value1, int value2);
これでネイティブコードでの実装に置き換えることが出来ます。