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

时间:2012-06-27 08:31:38

标签: android android-ndk

首先,我想告诉你我想做什么。我有一个.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-Header文件创建了一个C源文件,我在其中实现了本机代码。

然后,我使用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它不起作用。我的意思是如果我创建了一个类“Counter”的对象,其中加载了库libtest.so,

我得到了error: "Cannot load library: link_image[1966]: 1752 could not load needed library 'libtry.so' for 'libtest.so'"

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

1 个答案:

答案 0 :(得分:4)

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

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

摘自here