JNAを用いたJavaからCの関数呼び出しを行うCordovaプラグインを
Monacaで使用したいのですがCのライブラリが反応しません.
ターミナルではCから受け取った文字列の表示が確認されたのですが、
Monacaで使用すると以下の行でプラグイン動作が停止していることが判明しました.
java
1HelloLib hello = HelloLib.INSTANCE;
おそらく本来の原因はinterface部のこちらの行に当たると思います.
java
1final HelloLib INSTANCE = (HelloLib) Native.loadLibrary("hello", HelloLib.class);
Cのライブラリ(libhello.so)を読み込む行に当たるのですが、
Monacaでは特別にライブラリのパスの設定が必要などの制約があるのでしょうか?
java
1import com.sun.jna.Library; 2import com.sun.jna.Native; 3import com.sun.jna.Pointer; 4import com.sun.jna.ptr.PointerByReference; 5 6interface HelloLib extends Library { 7 final HelloLib INSTANCE = (HelloLib) Native.loadLibrary("hello", HelloLib.class); 8 9 void getString(PointerByReference val); 10} 11 12public class HelloJNA { 13 public static void main(String[] args){ 14 } 15 16 public static String get_JSON(){ 17 HelloLib hello = HelloLib.INSTANCE; 18 19 final PointerByReference ptrRef = new PointerByReference(); 20 hello.getString(ptrRef); 21 final Pointer p = ptrRef.getValue(); 22 String val = p.getString(0); 23 return val; 24 } 25} 26
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/11 07:08