不幸的是,OpenCV Manager已经停止在Android 4.2的OpenCV 2.4.3中(Mac OSX 10.7)

时间:2012-11-19 03:34:49

标签: android opencv android-ndk java-native-interface

我在运行openCV示例项目时遇到问题(3 - 4)。每次运行程序时,我都会在我的Android模拟器中发现“Uncorgeous OpenCV Manager已停止”的问题。

每次调用

时都会出现问题

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3,this,mLoaderCallback);

我按照这个页面 http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html

这是我有的警告信息

  

/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的模拟器   检测到仿真。

注意:

  1. 我将java合规性级别设置为1.6,因为我在编译OpenCV c ++文件时遇到了一些问题。 (在此页面之后:'Must Override a Superclass Method' Errors after importing a project into Eclipse

  2. 我使用OpenCV_2.4.3_binary_pack_armv7a.apk和OpenCV_2.4.3_Manager_2.0_armeabi-v7a.apk

  3. 安装adb
  4. 我使用三星Galaxy S作为我的手机模拟器

7 个答案:

答案 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");
}
它对我有用。