[Java] MacでJNI 〜JavaからC++を呼ぶ〜

| コメント(0) | トラックバック(0)
JNI(Java Native Interface)とかいうのを使って、JavaからC++の関数を呼ぶまでの手順。




①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日記




トラックバック(0)

トラックバックURL: http://blog.isocchi.com/MovableType/mt-tb.cgi/322

コメントする

このブログ記事について

このページは、isocchiが2009年1月12日 15:38に書いたブログ記事です。

ひとつ前のブログ記事は「[Mac] Macでコンピュータ名を変更する」です。

次のブログ記事は「[Java][C/C++] JNIで配列を引数や返り値に使う」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.0