我试图找出如何将我的原生lib集成到android代码中。我创建了一个简单的C ++函数,它在设备上运行代码时工作正常。但是我目前的目标是让它在单元测试环境(junit)中工作,我遇到了问题:
所以,在单元测试中,env System.loadLibrary("lib")
不起作用,我就把它搞定了
System.load("/full/path/to/lib.so")
,但现在这行引发异常:
java.lang.UnsatisfiedLinkError:app \ build \ intermediates \ cmake \ debug \ obj \ x86_64 \ liblib.so:无法找到依赖库 at java.lang.ClassLoader $ NativeLibrary.load(Native Method) 在java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) 在java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) 在java.lang.Runtime.load0(Runtime.java:809) 在java.lang.System.load(System.java:1086)
路径正确,此路径存在文件。
我尝试使用基于x86
的lib版本的路径,但它仍然会抛出相同的异常。
我使用最新的Android NDK,Clang工具链,在基于Windows 7 64位的笔记本电脑上运行单元测试,CPU是Core i7,运行时的java版本似乎也是64位。
那么在这种情况下会出现什么问题以及如何解决?
我有一种感觉,即使记住clang编译x86 / x86_64 * .so文件,它们在基于windows的env中仍然无效,但我没有安装linux来快速检查这个想法。< / p>
答案 0 :(得分:0)
显然可以,但是这条消息告诉您* .so库依赖于其他一些未在目标平台上呈现的库(在您的情况下在android上)。
可能是你的库使用Windows API中的一些东西。我建议使用Dependency Walker