タグ

javaとJNIに関するjigarashiのブックマーク (4)

  • JNI JavaVMメモ(Hishidama's Java native interface JVM Memo)

    他言語からJava実行 JNIを使って、C言語/C++からJavaVMを実行してメソッドを呼び出すことも出来る。 C言語またはC++内でJavaVMを生成(取得)し、後は通常のJNIと同様にコーディングする。 Windowsでの実行環境 リンク時にjvm.libが必要。→(VC++)ライブラリの追加方法 jvm.libは「%JAVA_HOME%\lib」に在る。→(VC++)ライブラリのパス指定方法 実行時にjvm.dllが必要。 jvm.dllは「%JAVA_HOME%\jre\bin\client」や「%JAVA_HOME%\jre\bin\server」に在る。 →(VC++)デバッグ実行時の環境変数PATHの追加方法 JavaVMの生成・破棄 JavaVMのオブジェクトを作成するには、jni.hで宣言されているJNI_CreateJavaVM関数を使う。 これに渡すための引数の初期

  • Java/JNI - PukiWiki

    cygwin-gcc † いろいろ方法はあるんだろうけど、一番簡単そうなdefファイルを作ってやる方法。 関数の数が多いと面倒だが。。 javahでヘッダーを作成したら、そのなかから関数の名前を取り出してきて 以下のようなファイル"hoge.def"を作成する。 EXPORTS Java_NativeFunctions_initialize_1IMPL Java_NativeFunctions_terminate_1IMPL という感じに、EXPORTSのあとに関数命を連ねる(戻り値とか引数は無視) で、ソースファイル"hoge.cpp"として、以下のようにコンパイル g++ -O3 -c hoge.cpp -o hoge.o -O2 -Wall -mrtd -g -mno-cygwin -I<jni.hのある場所> あとはリンク、ここがキモ。 以下のような感じでhoge.defを指定して

  • NativeActivityからのJavaの呼び出し[Android] - 芸軌社公式ブログ

    ここ2日間くらい、AndroidでNativeActivityから自作Javaクラスのメソッドが呼び出せずに悩んでいましたが、無事解決できたのでNativeActivityのCのコードからJavaを呼び出すサンプルを載せます。 Javaクラスの作成 まずは、EclipseでAndroid NDKのサンプルからNativeActivityのプロジェクトを作ります。 Android NDKのサンプルからNativeActivityのプロジェクトを読み込み NativeActivity/srcフォルダにandroid.app.NativeActivityを継承して適当な名前のクラス(ここでは"TestJNI")を作ります。 NativeActivityを継承してクラスを作成 ここに使いたいコードを書いていきます。 // TestJNI.java package com.example.nativ

  • メソッドを呼び出す - ファイヤープロジェクト

    ネイティブコードからクラスやオブジェクトのメソッドを呼び出す. 流れ サンプル インスタンスメソッドとスタティックメソッド メソッドIDの取得とシグネチャ javap 流れメソッドを呼び出す時の流れは,フィールドの取得や設定とそんなに変わらない.以下にその流れを示す. インスタンスメソッドの場合スタティックメソッドの場合 <Type>にはメソッドの返り値の型と対応するInt,Short,Byteなどが入る. サンプル流れが掴めたところでサンプルを示す.まずはネイティブコードから呼び出されるメソッドを保持するクラス. public class Methods{ public void publicVoidMethod(){ System.out.println("publicVoidMethod()"); } static int pkgPrivateStaticIntMethod(){ i

  • 1