1

ndk-build を使用していたとき、いつもこのエラーが発生しました。これは奇妙に opencv ライブラリ コードを指しています。

これは私が得たエラーメッセージです:

./obj//armeabi/objs/QRCA/QRCA.o: In function `~SURF`:
/----Path---/../sdk/native/jni/include/opencv2/nonfree/features2d.hpp:107: undefined reference to `vtable for cv::SURF`
/----Path---/../sdk/native/jni/include/opencv2/nonfree/features2d.hpp:107: undefined reference to `VTT for cv::SURF`
./obj/local/armeabi/objs/QRCA/QRCA.o: In function `fmatch(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >):`
/----Path---/jni/QRCA.cpp:28: undefined reference to `cv::SURF::SURF(double, int, int, bool, bool)`
/----Path---/jni/QRCA.cpp:36: undefined reference to `cv::SURF::SURF()`
./obj/local/armeabi/objs/QRCA/QRCA.o: In function `std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >::_M_range_check(unsigned int) const:`
~/Downloads/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_vector.h:780: undefined reference to `vtable for cv::SURF`
~/Downloads/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_vector.h:780: undefined reference to `VTT for cv::SURF`

これは私の Android.mk です:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

include ../sdk/native/jni/OpenCV.mk

LOCAL_MODULE    := QRCA
LOCAL_SRC_FILES := QRCA.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS +=  -llog -ldl
LOCAL_WHOLE_STATIC_LIBRARIES := gnustl_static

include $(BUILD_SHARED_LIBRARY)

どんな提案でも大歓迎です!

4

2 に答える 2

1

質問する前にGoogleにお願いします。答えは次のとおりです。

http://answers.opencv.org/question/445/242-android-missing-nonfree-package/

于 2012-10-13T08:37:44.883 に答える
1

私は同じ問題に遭遇し、これを見つけました: http://web.guohuiwang.com/technical-notes/sift_surf_opencv_android (別のチェックの後、上記のリンクのコメントに記載されています)

無料ではない機能を NDK で使用できるように設定する方法のウォークスルーです。

一般に、他のディストリビューションからヘッダー/コードをコピーし、これらの機能を使用するために独自の libnonfree.so をコンパイルするという考え方です。

現在、開発環境で問題が発生しているため、それがどれほど簡単かはわかりませんが、更新されており、解決策の良いソースになっているようです.

(この回答を追加したので、質問と同じページにここに書かれており、人々は他のサイトに行ってコメントをスクロールして見つける必要がありません)

于 2014-05-15T09:11:56.100 に答える