首先,我想告诉你我想做什么。我有一个.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'"
。
我做错了什么?提前谢谢。
答案 0 :(得分:4)
您正在将库链接到库。在Java代码中,它们必须以相反的顺序显式加载,例如
static
{
System.loadLibrary("dependencylib"); // try
System.loadLibrary("mainlib"); // test
}
摘自here