3

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

每次我打电话都会出现问题

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/arm-linux-androideabi/4.6/../。 ./../../arm-linux-androideabi/bin/ld:警告:./obj/local/armeabi-v7a/libgnustl_static.a(atexit_arm.o) 中的隐藏符号“__aeabi_atexit”被 DSO /Applications 引用/eclipse-android/OpenCV-2.4.3-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_java.so

Logcat(来自 OpenCV sample4):

gralloc_goldfish, org.opencv.samples.tutorial4 没有检测到 GPU 仿真的仿真器。

笔记:

  1. 我将 java 合规级别设置为 1.6,因为我在编译 OpenCV c++ 文件时遇到了一些问题。(跟随此页面:将项目导入 Eclipse 后的“必须覆盖超类方法”错误

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

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

7 回答 7

2

我遇到了同样的问题:DSO 引用了隐藏符号 '__aeabi_atexit' armeabi-v7a/libgnustl_static.a(atexit_arm.o)

我在 jni 中使用 opencv 测试,在我添加之前使用了一个可以运行的应用程序。我尝试在“Application.mk”中将 ARMv7-A 机器更改为 armeabi 我还尝试将上面提到的所有路径添加到项目 -> 属性 -> C/C++ 常规 -> 路径和符号。

它没有用。感谢我的团队负责人,我找到了解决方案:

在 Application.mk 中,您需要将 APP_STL := gnustl_static 更改为 APP_STL := gnustl_shared。这是因为 lib 显然是在共享而不是静态中编译的。另外,将 lib 添加到 loadlibrary 区域: System.loadLibrary("gnustl_shared"); 这应该在静态区域中完成,如下所示:

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);
       }
   }

而已!它解决了我的问题......希望它有所帮助。

英巴尔

于 2013-11-05T15:51:53.130 回答
1

如果您使用 Android 4.2,则更改为 4.0.3 或 4.1。有一个错误:http ://code.opencv.org/issues/2537

于 2012-12-17T08:16:57.563 回答
1

您的问题可能只是模拟器本身,请尝试使用实际设备进行测试。模拟器无法处理的东西很多。

于 2012-11-19T07:30:01.707 回答
0

我得到了同样的错误并认为即使迟到了,该解决方案可能对将来的某些人有所帮助。如果 android 设备硬件(如 armeabi-v7a (ARMv7-A + NEON) 或 Intel x86 等)不支持其版本,则会弹出错误“不幸的是 OpenCV 管理器已停止”。卸载当前管理器并安装正确的管理器。

于 2013-09-27T07:17:10.890 回答
0

这几天我在运行这两个教程时也遇到了问题。

在我的机器上,我安装了 OpenCV 2.4.3、Android-sdk-21 和 Android-ndk-r8c、Eclipse Juno。我在运行 Android 4.0.3 的 Asus Transformer tf101g 上执行测试。

当我运行教程时,它以一个奇怪的ClassNotFoundException. 检查项目属性我意识到这两个项目在错误的地方寻找标题。转到Project -> Properties -> C/C++ General -> Path and Symbols。在这里您可以看到 jni 文件中使用的包含目录。

NDKROOT 环境变量未在我的系统中设置,我必须手动将其设置为指向 NDK 根文件夹。

然后我不得不从

${NDKROOT}/sources/cxx-stl/gnu-libstdc++/include

${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include

希望这能有所帮助。

于 2012-11-26T16:45:53.000 回答
0

我也为此苦苦挣扎了将近 4 个小时,包括将目标降级到 4.0.3 但没有奏效。解决方案是直接从 google play 下载最新的 openCV 管理器到您的设备。

于 2013-01-23T01:53:13.347 回答
0

在 onCreate() 方法之前粘贴以下代码:

static {
        System.loadLibrary("opencv_java3");
}

它对我有用。

于 2016-04-17T18:27:01.563 回答