我在运行openCV示例项目(3-4)时遇到了问题。每次我运行这个程序时,我都会在我的安卓仿真器中发现“OpenCV管理器停止了”的问题。
这个问题每次我打电话时都会发生。
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3,,mLoaderCallback);
我遵循了这一页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引用。/OpenCV-2.4.3-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_java.so
Logcat (来自OpenCV sample4):
未检测到gralloc_goldfish、org.opencv.samples.tutorial4仿真程序。
注意:
发布于 2013-11-05 15:51:53
我遇到了同样的问题: DSO引用隐藏符号'__aeabi_atexit‘armeabi-v7a/libgnustl_static.a(atexit_arm.o)。
我在jni中使用opencv测试,并在添加它之前使用了一个应用程序。我试图在“Application.mk”中将ARMv7-A机器更改为armeabi,我还尝试将上面提到的所有路径添加到项目-> Properties -> C/C++通用->路径和符号中。
它没有起作用。多亏了我的组长,我找到了解决办法:
在Application.mk中,需要将APP_STL := gnustl_static更改为APP_STL := gnustl_shared。这是因为库显然是在共享中编译的,而不是静态的。此外,将lib: 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);
       }
   }就这样!它解决了我的问题。希望能帮上忙。
英巴尔
发布于 2012-11-19 07:30:01
您的问题可能只是模拟器本身,尝试获得一个实际的设备测试。有很多事情模拟器不能处理。
发布于 2012-12-17 08:16:57
如果您使用Android4.2,请将其更改为4.0.3或4.1。关于这一点有一个bug:http://code.opencv.org/issues/2537
https://stackoverflow.com/questions/13447322
复制相似问题