2017-04-07 44 views
2

我试图找出如何我的本地库集成到Android的代码。我创建了一个简单的C++函数,它在设备上运行代码时工作正常。但是我目前的目标是使其在单元测试ENV(JUnit的)工作,我面临的问题:“java.lang.UnsatisfiedLinkError中:*。所以:找不到依赖库”,在单元测试ENV

所以,在单元测试ENV System.loadLibrary("lib")不工作了,我也cange到 System.load("/full/path/to/lib.so"),但现在这行抛出异常:

java.lang.UnsatisfiedLinkError: app\build\intermediates\cmake\debug\obj\x86_64\liblib.so: Can't find dependent libraries at java.lang.ClassLoader$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)

路径是正确的,存在此路径的文件存在。

我tryed使用路径LIB的x86基础版本,但它仍然抛出同样的异常。

我使用的是最新的Android NDK,铛工具链,在基于Windows 7的64位笔记本电脑上运行单元测试,CPU是酷睿i7,并在运行Java版本也似乎是64位。

那么可能是什么问题,在这种情况下,如何解决?


我有,即使考虑到这一事实铛编译的x86/x86_64的* .so文件有一种感觉,他们仍然在基于Windows的ENV无效,但我没有安装Linux的快速检查这个想法。

回答

0

它可以是很明显,但这个消息告诉你的* .so库取决于哪个不是(在你的情况在Android)目标平台上提出了一些其他的库。
也许,你的库使用Windows API的一些东西。我建议检测坏依赖使用工具,如Dependency Walker

相关问题