Android NDK将一个库链接到另一个库”;无法加载库:link_image[1966]:1765无法加载所需的库…“;

Android NDK将一个库链接到另一个库”;无法加载库:link_image[1966]:1765无法加载所需的库…“;,android,android-ndk,Android,Android Ndk,首先我想告诉你我想做什么。我有一个.h文件和一个.c文件,其中包含常用的c代码,我用它创建了一个与AndroidNDK共享的库。现在我有一个.So文件,名为libtry.So。此外,我想在我的Android Eclipse项目中使用本机代码。因此,我创建了带有类“Counter”和内容的.java文件 public native static int Number(int n); 及 然后我使用javah工具从.java文件创建一个C头文件 之后,我为实现本机代码的C-Headerfile创建

首先我想告诉你我想做什么。我有一个.h文件和一个.c文件,其中包含常用的c代码,我用它创建了一个与AndroidNDK共享的库。现在我有一个.So文件,名为libtry.So。此外,我想在我的Android Eclipse项目中使用本机代码。因此,我创建了带有类“Counter”和内容的.java文件

public native static int Number(int n);

然后我使用javah工具从.java文件创建一个C头文件

之后,我为实现本机代码的C-Headerfile创建了一个C-sourcefile

然后,我用
LOCAL\u MODULE:=test
创建了一个共享库,将这两个文件命名为
libtest.so
。但关键是,我想将我在开始时创建的共享库libtry.so链接到这个共享库

所以在libtest.So的Android.mk文件中,我把
LOCAL\u LDLIBS:=-L/root/Android/Samples/Test/libs/-ltry

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

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

我得到了
错误:“无法加载库:link_image[1966]:1752无法为'libtest.so'加载所需的库'libtry.so'”


我做错了什么?提前感谢。

您正在将一个库链接到一个库。在Java代码中,它们必须以相反的顺序显式加载

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

答案摘自

您是将so文件用于其他项目,还是将C代码用于同一项目。事实上,我想再解释一遍,了解更多细节。.so文件libtry.so包含libtest.so必须使用的函数。所以我所做的就是在libtest.So的Android.mk中将libtry.So链接到libtest.So,就像我的第一条评论中所示。我可以用ndk编译。但是我不能在我的Eclipse项目中使用libtest.so,因为这个主题的标题中显示了错误。我的这个链接的答案被删除了。对于您的回答,是的,链接中的步骤显示了如何仅使用c源代码构建第三个libtry.so。在我的例子中,它是一个物理库,我们必须在我们的许多游戏中使用它。因此,我们考虑构建一个单独的库供将来使用。感谢codetiger提供的链接。我会尝试一下,告诉你它是如何工作的。你解决了这个问题吗?我也犯了同样的错误
static
    {
        System.loadLibrary("dependencylib"); // try 
        System.loadLibrary("mainlib");       // test
    }