“unit-test env”中的“java.lang.UnsatisfiedLinkError:* .so:找不到依赖库”

我想弄清楚如何将我的本地库集成到android代码。 我创build了一个简单的C ++函数,在设备上运行代码时工作正常。 然而,我目前的目标是让它在unit testingenv(junit)中工作,而且我遇到了问题:

因此,在unit testingenv System.loadLibrary("lib")不工作,我把它装载到System.load("/full/path/to/lib.so") ,但现在这一行引发exception:

java.lang.UnsatisfiedLinkError:app \ build \ intermediates \ cmake \ debug \ obj \ x86_64 \ liblib.so:无法在java.lang.ClassLoader中find依赖库$ NativeLibrary.load(Native Method)at java.lang.ClassLoader .loadLibrary0(ClassLoader.java:1941)at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)at java.lang.Runtime.load0(Runtime.java:809)at java.lang.System.load(System。 Java的:1086)

path是正确的,并存在由此path存在的文件。

我尝试使用基于x86的lib版本的path,但它仍然抛出相同的exception。

我正在使用最新的Android NDK,Clang工具链,在基于Windows 7 64位笔记本电脑上运行unit testing,CPU是Core i7,运行时Java版本似乎也是64位。

那么在这种情况下会出现什么问题,以及如何解决?


我有一种感觉,即使记住clang编译x86 / x86_64 * .so文件的事实,它们在基于windows的环境中依然无效,但是我没有安装linux来快速检查这个想法。

它可以是显而易见的,但是这个消息告诉你的* .so库取决于其他目标平台上没有提供的库(在你的情况下在android上)。
可能你的库使用Windows API的一些东西。 我建议使用像Dependency Walker这样的工具来检测不良的依赖 关系