0

私のプロジェクトの 1 つでは、ネイティブの C コードを自分のjava class. このために、次の手順を実行しました。

  1. 私の Java クラスでは、プロジェクトに必要ないくつかのネイティブ メソッドを宣言しました。すなわち

    public native String print(String pM,int len);
    
    public native int openPrint();
    
  2. 以下のようなライブラリファイルを開始しました

    static
    {
        System.loadLibrary("print");
    }
    
  3. この後、Javaコードに関してヘッダーファイルを作成しました。

  4. cファイルを作成し、上記のメソッドをcで実装しました

  5. この後、ライブラリファイルを生成しました。つまりlibprint.sondk-build

  6. ライブラリファイルが正常に作成されましたlibs->armeabi->libprint.so

  7. そのJavaアプリケーションを実行するたびに、エラーが発生します

    Exception in thread "main" java.lang.UnsatisfiedLinkError: 
      no print in java.library.path
    

この問題を解決するにはどうすればよいですか。

libprint.soこの種のアプリケーションを他の Android 開発者に提供して、ネイティブ コールを実行せず、ファイルを作成せずにこのアプリケーションを作成できるようにしたい

つまり、アプリケーション開発者に独自の API を提供する必要があります。このために、JAR ファイルを作成する必要があります。java.classlibprint.so(共有ライブラリ)などを含む...

も含むJARファイルの作成方法libprint.so..

私はEclipseとopen-jdk6を使用してubuntuで上記のすべてを行っています。

4

1 に答える 1

0

Windows で jar が dll を使用する場合、その dll を jar 内のルート フォルダーにコピーする必要があります。その後、プログラムはそれを見つけます。

試してみてください。役立つかもしれません。

于 2012-09-18T07:35:48.403 に答える