我在运行openCV示例项目时遇到问题(3 - 4)。每次运行程序时,我都会在我的Android模拟器中发现“Uncorgeous OpenCV Manager已停止”的问题。
每次调用
时都会出现问题OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3,this,mLoaderCallback);
这是我有的警告信息
/Applications/eclipse-android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin /../ LIB / GCC /臂-Linux的androideabi / 4.6 /。 ./../../../arm-linux-androideabi/bin/ld: 警告:隐藏符号'__aeabi_atexit'中 ./obj/local/armeabi-v7a/libgnustl_static.a(atexit_arm.o)被引用 由DSO /Applications/eclipse-android/OpenCV-2.4.3-android-sdk/sdk/native/jni /../库/ armeabi-V7A / libopencv_java.so
Logcat(来自OpenCV sample4):
gralloc_goldfish,org.opencv.samples.tutorial4没有GPU的模拟器 检测到仿真。
注意:
我将java合规性级别设置为1.6,因为我在编译OpenCV c ++文件时遇到了一些问题。 (在此页面之后:'Must Override a Superclass Method' Errors after importing a project into Eclipse)
我使用OpenCV_2.4.3_binary_pack_armv7a.apk和OpenCV_2.4.3_Manager_2.0_armeabi-v7a.apk
答案 0 :(得分:2)
我遇到了同样的问题: 隐藏符号'__aeabi_atexit'armeabi-v7a / libgnustl_static.a(atexit_arm.o)由DSO引用
我在jni中使用opencv测试,在我添加它之前有一个应用程序。 我试图在“Application.mk”中将ARMv7-A机器更改为armeabi 我还试图将上面提到的所有路径添加到项目中 - >属性 - > C / C ++一般 - >路径和符号。
它不起作用。 感谢我的团队领导,我找到了解决方案:
在Application.mk中,您需要更改APP_STL:= gnustl_static 到APP_STL:= gnustl_shared。这是因为lib可以用共享而不是静态编译。 另外,在lib:System.loadLibrary(“gnustl_shared”)中添加到loadlibrary区域; 这应该在静态区域完成,如下所示:
static {
try{
System.loadLibrary("gnustl_shared");
//To do - add your static code
}
catch(UnsatisfiedLinkError e) {
Log.v(TAG, "Native code library failed to load.\n" + e);
}
catch(Exception e) {
Log.v(TAG, "Exception: " + e);
}
}
就是这样!它解决了我的问题...... 希望它有所帮助。
英巴尔
答案 1 :(得分:1)
您的问题可能只是模拟器本身,尝试让实际的设备进行测试。 模拟器无法处理很多事情。
答案 2 :(得分:1)
如果您使用Android 4.2而不是更改为4.0.3或4.1。有一个错误:http://code.opencv.org/issues/2537
答案 3 :(得分:0)
我这两天运行这两个教程时遇到了问题。
在我的机器上,我安装了OpenCV 2.4.3,Android-sdk-21和Android-ndk-r8c,Eclipse Juno。我在运行Android 4.0.3的Asus Transformer tf101g上进行测试。
当我运行教程时,它失败了一个奇怪的ClassNotFoundException
。检查项目属性我意识到这两个项目在错误的位置寻找标题。转到项目 - >属性 - > C / C ++一般 - >路径和符号。在这里,您可以看到jni文件中使用的包含目录。
我的系统中未设置NDKROOT环境变量,我必须手动将其设置为指向NDK根文件夹。
然后我必须从
更改stl include${NDKROOT}/sources/cxx-stl/gnu-libstdc++/include
到
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include
希望这可以提供帮助。
答案 4 :(得分:0)
我对此持续了近4个小时的努力,包括将目标降级到4.0.3,但没有奏效。 解决方案是将最新的openCV管理器从谷歌播放直接下载到您的设备。
答案 5 :(得分:0)
我得到了同样的错误并且想到即使很晚,解决方案可能对将来有些人有所帮助。 如果Android设备硬件不支持其版本(如armeabi-v7a(ARMv7-A + NEON)或Intel x86等),则会弹出“Unfororgeous OpenCV Manager已停止”错误。卸载当前的Manager并安装正确的。
答案 6 :(得分:0)
在onCreate()方法之前粘贴以下代码:
static {
System.loadLibrary("opencv_java3");
}
它对我有用。