1

.soAndroid NDK を使用してファイルを作成しました。xxx.java クラスに、c/c++ ファイルから呼び出すネイティブ メソッドをいくつか追加しました。これらのネイティブメソッドは、たとえば以下のように独自のメソッドで呼び出しています。

static
    {
    System.loadLibrary("print");
    }
    public native String print(String pM,int len);
    public native int openPrint();

上記のネイティブ メソッドは、他の Android アプリケーション開発者が API として使用できるように、私のメソッドで呼び出しています。

public static void foo(){

         openPrint()
    }

これは正しい方法ですか?

このため、1 つのmyprint.Jarファイルを作成しました。libprint.soファイルも含まれます。

上記のjarファイルを別のアプリケーションに追加しました。xxx.javaからクラスをインポートしていますが、アプリケーションを実行しようとすると、エラーがスローされます

  FATAL Exception,
  java.lang.UnsatisifiedLinkerror....

上記の問題を解決するにはどうすればよいですか?

前もって感謝します

4

2 に答える 2

1

libprint.solibs フォルダーに配置し、次を使用してロードする必要があります。

System.loadLibrary("print");

java.lang.UnsatisfiedLinkErrorc 関数名が Java クラスの完全修飾名と一致しなかったことが原因である可能性があります。
このリンクに従うことをお勧めします: http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/

于 2012-09-24T08:00:58.507 に答える
1

.so ファイルは、Eclipse の libs-->armeabi-->xxx.so フォルダーに配置する必要があります。次に、Eclipseでbuild.propertiesファイルを作成し、次のようにしてxxx.soファイルのパスを指定します

open build.properties file. 

   then click on Add Library button. 

   then one edit box will appear write below line in the edit box.



external.libs.dir=libs 
于 2012-09-25T11:23:57.977 に答える