私は OpenCV もこのグループも初めてです。現在、OpenCV ライブラリを必要とする Android Phone ICS のプロジェクトに取り組んでいます。私のモジュール コードは C で記述されており、そのコードで OpenCV lib 関数を呼び出したいと考えています。まず、Android プラットフォーム用の OpenCV-2.4.0 をダウンロードしました。
これまでに行った手順:
- .a および .so ファイルを \OpenCV-2.4.0-android-bin.tar\OpenCV-2.4.0-android-bin\OpenCV-2.4.0\libs\armeabi-v7a からモジュール フォルダーにコピーしました
- .h ファイルを \OpenCV-2.4.0-android-bin.tar\OpenCV-2.4.0-android-bin\OpenCV-2.4.0\include からモジュール フォルダーにコピーしました
- モジュールの android.mk ファイルに .h 、.a および .so パスを追加します。
- ビルドを実行します。
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'