4

まずはやりたいことを伝えたい。Android NDK で共有ライブラリを作成した通常の C コードを含む .h ファイルと .c ファイルがあります。これで、libtry.so という .so ファイルができました。さらに、Android Eclipse プロジェクトでネイティブ コードを使用したいと考えています。そこで、クラス「カウンター」とコンテンツを含む.javaファイルを作成しました

public native static int Number(int n);

static
{
   System.loadLibrary("test");
}

次に、javah ツールを使用して、.java ファイルから C ヘッダー ファイルを作成します。

その後、ネイティブ コードを実装する C-Headerfile 用の C-sourcefile を作成します。

次にLOCAL_MODULE := test、ファイル名がlibtest.so. しかし要点は、最初に作成した共有ライブラリ libtry.so をこの共有ライブラリにリンクしたいということです。

そのため、libtest.so の Android.mk ファイルにLOCAL_LDLIBS := -L/root/Android/Samples/Test/libs/ -ltry.

実際には、この Android.mk-file を ndk-build でコンパイルできるため、これは機能します。

しかし、私のEclipseプロジェクトでは、ライブラリlibtest.soを使用したい場合、機能しません。つまり、ライブラリ libtest.so がロードされている Class "Counter" のオブジェクトを作成すると、

を取得しerror: "Cannot load library: link_image[1966]: 1752 could not load needed library 'libtry.so' for 'libtest.so'"ます。

私は何を間違っていますか?前もって感謝します。

4

1 に答える 1

4

ライブラリをライブラリにリンクしています。Java コードでは、明示的に逆の順序でロードする必要があります。

static
    {
        System.loadLibrary("dependencylib"); // try 
        System.loadLibrary("mainlib");       // test
    }

ここから得た答え

于 2013-04-22T19:36:48.613 に答える