4

私は OpenCV もこのグループも初めてです。現在、OpenCV ライブラリを必要とする Android Phone ICS のプロジェクトに取り組んでいます。私のモジュール コードは C で記述されており、そのコードで OpenCV lib 関数を呼び出したいと考えています。まず、Android プラットフォーム用の OpenCV-2.4.0 をダウンロードしました。

  • これまでに行った手順:

    1. .a および .so ファイルを \OpenCV-2.4.0-android-bin.tar\OpenCV-2.4.0-android-bin\OpenCV-2.4.0\libs\armeabi-v7a からモジュール フォルダーにコピーしました
    2. .h ファイルを \OpenCV-2.4.0-android-bin.tar\OpenCV-2.4.0-android-bin\OpenCV-2.4.0\include からモジュール フォルダーにコピーしました
    3. モジュールの android.mk ファイルに .h 、.a および .so パスを追加します。
    4. ビルドを実行します。

libopencv_core.a でリンク エラーが発生しています。libopencv_core.a を .mk ファイルから削除すると、ビルドは成功しました。これらの関数 (gzopen、gzclose など) については、libopencv_core.a が他の lib に依存していると思います。

prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/jaguark/obj/STATIC_LIBRARIES/libopencv_core_intermediates/libopencv_core.a(persistence.cpp.o): in function icvPuts(CvFileStorage*, char const*):persistence.cpp(.text._ZL7icvPutsP13CvFileStoragePKc+0x20): error: undefined reference to 'gzputs'
prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/jaguark/obj/STATIC_LIBRARIES/libopencv_core_intermediates/libopencv_core.a(persistence.cpp.o): in function icvGets(CvFileStorage*, char*, int):persistence.cpp(.text._ZL7icvGetsP13CvFileStoragePci+0x26): error: undefined reference to 'gzgets'
prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/jaguark/obj/STATIC_LIBRARIES/libopencv_core_intermediates/libopencv_core.a(persistence.cpp.o): in function icvXMLSkipSpaces(CvFileStorage*, char*, int):persistence.cpp(.text._ZL16icvXMLSkipSpacesP13CvFileStoragePci+0x1e2): error: undefined reference to 'gzgets'
prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/jaguark/obj/STATIC_LIBRARIES/libopencv_core_intermediates/libopencv_core.a(persistence.cpp.o): in function icvXMLSkipSpaces(CvFileStorage*, char*, int):persistence.cpp(.text._ZL16icvXMLSkipSpacesP13CvFileStoragePci+0x208): error: undefined reference to 'gzeof'
prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/jaguark/obj/STATIC_LIBRARIES/libopencv_core_intermediates/libopencv_core.a(persistence.cpp.o): in function icvXMLSkipSpaces(CvFileStorage*, char*, int):persistence.cpp(.text._ZL16icvXMLSkipSpacesP13CvFileStoragePci+0x33c): error: undefined reference to 'gzeof'
4

1 に答える 1

3

Android プロジェクトとNDK-buildに OpenCV を使用する方法については、これらのチュートリアルに従うことができます。最初は少しトリッキーです。また、コンパイルのたびに消えるライブラリに問題があり、毎回何度も何度も含める必要がありました。

于 2012-05-30T09:54:25.810 に答える