4

首先我想告诉你我想做什么。我有一个 .h 文件和一个 .c 文件,其中包含常用的 C 代码,我用它创建了一个与 Android NDK 的共享库。所以现在我有一个名为 libtry.so 的 .so 文件。此外,我想在我的 Android Eclipse 项目中使用本机代码。所以我用“Counter”类和内容创建了.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.

实际上这是可行的,因为我可以使用 ndk-build 编译这个 Android.mk 文件。

但是现在在我的 Eclipse 项目中,如果我想使用库 libtest.so 它不起作用。我的意思是如果我创建一个加载库 libtest.so 的“计数器”类的对象,

我得到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 回答