JNI(Java Native Interface)とかいうのを使って、JavaからC++の関数を呼ぶまでの手順。
①Javaでnative methodを持つクラスを作る。
②コンパイル
③ヘッダファイルを作成
これでHoge.hが生成される。
④C/C++でhogehogeメソッドを実装
⑤コンパイルして、ダイナミックリンクライブラリを生成
⑥Javaでmainを作る。
⑦コンパイルして、実行
hugaって表示されればおk
<参考>
・JavaでHello World JNI編
・JavaでJNIを使ってみる(3) | サラトガIT日記
①Javaでnative methodを持つクラスを作る。
public class Hoge {
static {
System.loadLibrary("Hoge");
}
public native String hogehoge();
}
②コンパイル
$ javac Hoge.java
③ヘッダファイルを作成
$ javah -jni Hoge
これでHoge.hが生成される。
④C/C++でhogehogeメソッドを実装
#include "Hoge.h"
JNIEXPORT jstring JNICALL Java_Hoge_hogehoge(JNIEnv *env, jobject obj) {
return env->NewStringUTF("huga");
}
⑤コンパイルして、ダイナミックリンクライブラリを生成
$ gcc -fPIC -g -I/System/Library/Frameworks/JavaVM.framework/Headers -c Hoge.cpp $ gcc -lstdc++ -bundle -o libHoge.jnilib Hoge.o
⑥Javaでmainを作る。
public class Bar {
public static void main(String args[]) {
Hoge jni = new Hoge();
System.out.println(jni.hogehoge());
}
}
⑦コンパイルして、実行
$ javac Bar.java $ java Bar
hugaって表示されればおk
<参考>
・JavaでHello World JNI編
・JavaでJNIを使ってみる(3) | サラトガIT日記

コメントする