【发布时间】:2017-04-07 15:14:16
【问题描述】:
我正试图弄清楚如何将我的本机库集成到 android 代码中。我创建了一个简单的 C++ 函数,它在设备上运行代码时工作正常。但是我目前的目标是让它在单元测试环境(junit)中工作,我遇到了问题:
所以,在单元测试环境中 System.loadLibrary("lib") 不起作用,我可以将它
System.load("/full/path/to/lib.so"),但是现在这行抛出异常:
java.lang.UnsatisfiedLinkError: app\build\intermediates\cmake\debug\obj\x86_64\liblib.so: 找不到依赖库 在 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 的环境中仍然无效,但我没有安装 linux 来快速检查这个想法。
【问题讨论】:
标签: android c++ windows android-ndk java-native-interface