タグ

JNIに関するbird_dip_jpのブックマーク (3)

  • JNIエラーメモ(Hishidama's Java native interface error Memo)

    JNIのエラー JNIはJavaとC言語/C++間をつなぐので、ミスをするとJavaだけで作っているよりも複雑な障害が発生する。 UnsatisfiedLinkErrorが発生する場合 戻り値のクラスが異なる場合 クラスにNULLを指定した場合 UnsatisfiedLinkError System.loadLibrary()で指定したJNIのライブラリー(dllやso)が見つからないとUnsatisfiedLinkErrorが発生する。 System.loadLibrary("SampleJNI"); java.lang.UnsatisfiedLinkError: no SampleJNI in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682) at java.lang.Runtim

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

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

  • JNIコーディングメモ(Hishidama's Java native interface coding Memo)

    JNIのC言語/C++側のコーディング C言語とC++の違い コーディング例 JNI関数の概要 プリミティブ型・参照型(JavaオブジェクトのC/C++での扱い) String型 [/2006-11-09] 配列型 クラスの取得・インスタンス生成 [/2008-02-02] オブジェクトのメソッド呼び出し [/2008-02-07] オブジェクトのフィールド操作 ローカル参照の終了 [2006-11-09] 例外処理 [/2007-10-13] jni.hの中でC言語/C++で使える構造体 (クラス)が定義されているが、 コンパイラーがC言語の場合とC++の場合では定義のされ方が異なり、使い方も少し異なる。 JniJikken.c: JniJikken.cpp: #include "JniJikken.h" JNIEXPORT jbyteArray JNICALL Java_JniJikk

  • 1