【发布时间】:2014-10-05 21:54:39
【问题描述】:
我正在使用Eclipse 并使用NDK 版本“r9d”。尝试加载库时,我不断收到不满意的链接错误。
我花了几个小时试图在这里找到答案,例如 this 或 this,但在尝试了列出的所有解决方案后,我仍然收到相同的错误。
Application.mk
NDK_TOOLCHAIN_VERSION=4.8
APP_CPPFLAGS := -frtti -fexceptions -std=c++11
APP_STL = gnustl_static
# armeabi armeabi-v7a mips
APP_ABI := x86
APP_PLATFORM := android-16
Android.mk
JNI_PATH := $(call my-dir)
LOCAL_PATH := $(JNI_PATH)
#include $(call all-subdir-makefiles)
include $(JNI_PATH)/C3Core/Android.mk
include $(JNI_PATH)/boost/Android.mk
LOCAL_PATH := $(JNI_PATH)
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include $(JNI_PATH)/OpenCV/sdk/native/jni/OpenCV.mk
LOCAL_MODULE := Visualizer
LOCAL_SRC_FILES += Visualizer.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS += -llog -ldl -landroid -ljnigraphics
LOCAL_CPP_FEATURES += exceptions
LOCAL_STATIC_LIBRARIES += boost_system boost_thread boost_filesystem c3core opencv
include $(BUILD_SHARED_LIBRARY)
Visualizer.java
public class Visualizer {
public native Bitmap generate(AssetManager mgr, String specifier);
public native int getSurfaceIndex(int x, int y);
static {
try {
System.loadLibrary("opencv_java");
System.loadLibrary("Visualizer");
} catch (UnsatisfiedLinkError e) {
Log.v("ERROR", "" + e);
}
}
}
Android Manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.iko"
android:versionCode="1"
android:versionName="1.0" >
日志
08-12 15:10:22.849: V/ERROR(30905): java.lang.UnsatisfiedLinkError: Couldn't load opencv_java from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.iko-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.iko-1, /vendor/lib, /system/lib]]]: findLibrary returned null
现在我知道这意味着它找不到库,但我不知道如何解决这个问题。 该库位于我的项目中 libs/x86/,eclipse 项目资源管理器中的完整文件名是 libopencv_java.so - [x86/le]。
感谢您的帮助,如果需要更多详细信息,请随时询问。
编辑
这个我也试过了
static {
try {
System.load("/data/data/com.example.iko/lib/x86/libopencv_java.so");
System.load("/data/data/com.example.iko/lib/x86/libVisualizer.so");
} catch (UnsatisfiedLinkError e) {
Log.v("ERROR", "" + e);
}
}
我得到了这个错误 -
08-12 14:55:16.259: V/ERROR(29582): java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/com.example.iko/lib/x86/libopencv_java.so" not found
【问题讨论】:
-
将 ADB 与 run-as 工具或(隐式 root)兼容的 ABI 模拟器一起使用来检查应用程序安装并查看相关库是否实际存在。如果不是,则将 apk 作为 zip 文件打开,看看它是否进入了该文件。
标签: java android eclipse android-ndk