Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不幸的是,OpenCV管理器在android 4.2(Mac OSX 10.7)的OpenCV 2.4.3中停止运行_Android_Opencv_Android Ndk_Java Native Interface - Fatal编程技术网

不幸的是,OpenCV管理器在android 4.2(Mac OSX 10.7)的OpenCV 2.4.3中停止运行

不幸的是,OpenCV管理器在android 4.2(Mac OSX 10.7)的OpenCV 2.4.3中停止运行,android,opencv,android-ndk,java-native-interface,Android,Opencv,Android Ndk,Java Native Interface,我在运行openCV示例项目(3-4)时遇到问题。每次运行该程序时,我都会发现问题“不幸的是OpenCV管理器已停止”显示在我的Android仿真器中 每次我打电话都会出现问题 initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3,this,mLoaderCallback) 我看了这一页 这是我收到的警告信息 /Applications/eclipse-android/android-ndk-r8c/toolschains/arm-linux-androide

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

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

initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3,this,mLoaderCallback)

我看了这一页

这是我收到的警告信息

/Applications/eclipse-android/android-ndk-r8c/toolschains/arm-linux-androideabi-4.6/prebuild/darwin-x86/bin//lib/gcc/arm-linux-androideabi/4.6/../../../../../../../arm linux-androideabi/bin/ld: 警告:中隐藏符号“\uuuu aeabi\u atexit” ./obj/local/armeabi-v7a/libgnustl_static.a(atexit_arm.o)参考 由DSO提供 /Applications/eclipseandroid/OpenCV-2.4.3-android-sdk/sdk/native/jni/。/libs/armeabi-v7a/libopencv_java.so

Logcat(来自OpenCV样本4):

gralloc_goldfish,org.opencv.samples.tutorial4无GPU仿真器 检测到模拟

注:

>p>因为java编译C++中的OpenCV文件有问题,所以我将Java的符合性设置为1.6。 (在本页之后:)

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

  • 我用三星Galaxy S做手机模拟器

  • 您的问题可能只是仿真器本身,请尝试使用实际设备进行测试。
    emulator无法处理很多事情。

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

    在我的机器上,我安装了opencv2.4.3、Android-sdk-21和Android-ndk-r8c、eclipsejuno。我在运行安卓4.0.3的华硕Transformer tf101g上进行测试

    当我运行教程时,它失败了,出现了一个奇怪的
    ClassNotFoundException
    。检查项目属性时,我发现这两个项目在错误的位置查找标题。转到项目->属性->C/C++常规->路径和符号。在这里,您可以看到jni文件中使用的include目录

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

    然后,我不得不将stl include从

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


    希望这能有所帮助。

    如果您使用安卓4.2,请改为4.0.3或4.1。这其中有一个bug:

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

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

    我遇到了相同的问题: DSO引用了隐藏符号“uuu 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显然是在shared而不是static中编译的。 此外,将lib:System.loadlibrary(“gnustl_共享”)添加到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);
           }
       }
    
    就这样!它解决了我的问题。。。 希望有帮助


    Inbal

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


    这对我来说是有用的。< / P>我在OpenCV找到了Android文档……“同时,请考虑教程0和教程1的示例使用java Android API,它可以从Android SDK上的模拟器中获得。其他示例使用OpenCV本机摄像头,可能无法与emulator配合使用。“谢谢您的评论:)用绝对路径替换NDKROOT..以确保问题不是来自环境变量。我添加了另一个绝对包含路径,但我还定义了NDKROOT环境变量,因为如果我没有错,它会在其他地方使用(我现在没有代码)并将其添加到Eclipse的窗口首选项中。这是我的包含路径;(1)${NDKROOT}/platforms/android-9/arch-arm/usr/include(2)${NDKROOT}/sources/cxx stl/gnu libstdc++/4.6/include(3)${NDKROOT}/sources/cxx stl/gnu libstdc++/4.6/libs/armeabi-v7a/include(4)/YOUR_OPENCV_PATH/sdk/native/jni/included要正确命名c函数,您的java似乎无法找到具有c函数的库。

    OPENCV
    仍在使用到gnustl的静态链接(当然,如果您正在寻找冒险,您可以修改后重新编译OPENCV)。警告消失了,因为现在有两个二进制文件使用不同的STL实现,这比忽略警告一点也不干净。
    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);
           }
       }
    
    static {
            System.loadLibrary("opencv_java3");
    }