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.tutorial4GPUエミュレーションが検出されていないエミュレーター。

ノート:

  1. OpenCV c ++ファイルのコンパイルに問題があるため、Javaコンプライアンスレベルを1.6に設定しました。(このページをフォロー:'プロジェクトをEclipseにインポートした後、'スーパークラスメソッドをオーバーライドする必要があります'エラー

  2. OpenCV_2.4.3_binary_pack_armv7a.apkとOpenCV_2.4.3_Manager_2.0_armeabi-v7a.apkの両方を使用してadbをインストールします

  3. 携帯電話エミュレーターとしてSamsungGalaxySを使用しました
4

7 に答える 7

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 を 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

問題は単にエミュレーター自体にある可能性があります。実際にデバイスをテストしてみてください。エミュレーターでは処理できないことがたくさんあります。

于 2012-11-19T07:30:01.707 に答える
1

Android 4.2 を使用している場合は、4.0.3 または 4.1 に変更してください。それについてのバグがあります: http://code.opencv.org/issues/2537

于 2012-12-17T08:16:57.563 に答える
0

今日も 2 つのチュートリアルを実行する際に問題が発生しました。

私のマシンには、OpenCV 2.4.3、Android-sdk-21、および Android-ndk-r8c、Eclipse Juno をインストールしました。Android 4.0.3 を実行している Asus Transformer tf101g でテストを実行します。

チュートリアルを実行すると、奇妙なエラーで失敗しましたClassNotFoundException。プロジェクトのプロパティを確認すると、2 つのプロジェクトが間違った場所でヘッダーを探していることがわかりました。Project -> Properties -> C/C++ General -> Path and Symbolsに移動します。ここでは、jni ファイルで使用されるインクルード ディレクトリを確認できます。

NDKROOT 環境変数がシステムに設定されていなかったため、NDK ルート フォルダーを指すように手動で設定する必要がありました。

次に、stlインクルードを次から変更する必要がありました

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

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

これが役立つことを願っています。

于 2012-11-26T16:45:53.000 に答える
0

I too struggled with this for almost 4 hours, including downgrading target to 4.0.3 but did not work. The solution was to download the latest openCV manager from google play to your device directly.

于 2013-01-23T01:53:13.347 に答える
0

onCreate() メソッドの前に次のコードを貼り付けます。

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

それは私のために働いた。

于 2016-04-17T18:27:01.563 に答える