Android ndk giving errors while compiling in eclipse

為{幸葍}努か 提交于 2020-01-06 05:40:10

问题


Following is the Android.mk file of my android application in eclipse.

    LOCAL_PATH := $(call my-dir)



include $(CLEAR_VARS)

OPENCV_CAMERA_MODULES := off

OPENCV_MK_PATH:=C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\OpenCV.mk


OPENCV_LIB_TYPE:=STATIC
OPENCV_INSTALL_MODULES:=on

include $(OPENCV_MK_PATH)

#Profiler 
#-include android-ndk-profiler.mk

#include ../includeOpenCV.mk
#ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
#   #try to load OpenCV.mk from default install location
#   include $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mk
#else
#   include $(OPENCV_MK_PATH)
#endif

LOCAL_C_INCLUDES := C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include

LOCAL_MODULE    := native_wallet
LOCAL_SRC_FILES := jni_recognizer.cpp NativeVision/vision.cpp
LOCAL_CFLAGS=-ffast-math -O3 -funroll-loops
#LOCAL_CFLAGS=-O3 -funroll-loops

LOCAL_LDLIBS +=  -llog -ldl

#Profiling
#LOCAL_CFLAGS := -pg
#LOCAL_STATIC_LIBRARIES := andprof


include $(BUILD_SHARED_LIBRARY)

After updating the opencv_mk_path and local_c_includes, the application is not compiling through ndk. I have tried every possible solution but no luck. Following are the errors that occured:

Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml    
[armeabi-v7a] Compile++ thumb: native_wallet <= jni_recognizer.cpp
jni/jni_recognizer.cpp: In function 'void Java_com_ndu_mobile_darwinwallet_Recognizer_nvTrainImage(JNIEnv*, jobject, jstring, jstring)':
jni/jni_recognizer.cpp:18:88: warning: format not a string literal and no format arguments [-Wformat-security]
 #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,   "JNI_DEBUGGING", __VA_ARGS__)
                                                                                        ^
jni/jni_recognizer.cpp:78:3: note: in expansion of macro 'LOGD'
   LOGD( out.str().c_str() );
   ^
jni/jni_recognizer.cpp:18:88: warning: format not a string literal and no format arguments [-Wformat-security]
 #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,   "JNI_DEBUGGING", __VA_ARGS__)
                                                                                        ^
jni/jni_recognizer.cpp:89:3: note: in expansion of macro 'LOGD'
   LOGD( out.str().c_str() );
   ^
jni/jni_recognizer.cpp: In function '_jstring* Java_com_ndu_mobile_darwinwallet_Recognizer_nvRecognize(JNIEnv*, jobject, jint, jint, jbyteArray)':
jni/jni_recognizer.cpp:18:88: warning: format not a string literal and no format arguments [-Wformat-security]
 #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,   "JNI_DEBUGGING", __VA_ARGS__)
                                                                                        ^
jni/jni_recognizer.cpp:216:4: note: in expansion of macro 'LOGD'
    LOGD( (char*) out.str().c_str());
    ^
[armeabi-v7a] Compile++ thumb: native_wallet <= vision.cpp
jni/NativeVision/vision.cpp: In function 'cv::Ptr<cv::ORB> getQueryDetector()':
jni/NativeVision/vision.cpp:18:76: error: cannot allocate an object of abstract type 'cv::ORB'
     Ptr<ORB> detector1 = new ORB(DEFAULT_QUERY_FEATURES, 1.2f, 5U, 10, 1, 2);
                                                                            ^
In file included from C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/calib3d.hpp:48:0,
                 from C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/calib3d/calib3d.hpp:48,
                 from jni/NativeVision/vision.h:2,
                 from jni/NativeVision/vision.cpp:1:
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:254:20: note:   because the following virtual functions are pure within 'cv::ORB':
 class CV_EXPORTS_W ORB : public Feature2D
                    ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:292:26: note:   virtual void cv::ORB::setMaxFeatures(int)
     CV_WRAP virtual void setMaxFeatures(int maxFeatures) = 0;
                          ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:293:25: note:   virtual int cv::ORB::getMaxFeatures() const
     CV_WRAP virtual int getMaxFeatures() const = 0;
                         ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:295:26: note:   virtual void cv::ORB::setScaleFactor(double)
     CV_WRAP virtual void setScaleFactor(double scaleFactor) = 0;
                          ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:296:28: note:   virtual double cv::ORB::getScaleFactor() const
     CV_WRAP virtual double getScaleFactor() const = 0;
                            ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:298:26: note:   virtual void cv::ORB::setNLevels(int)
     CV_WRAP virtual void setNLevels(int nlevels) = 0;
                          ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:299:25: note:   virtual int cv::ORB::getNLevels() const
     CV_WRAP virtual int getNLevels() const = 0;
                         ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:301:26: note:   virtual void cv::ORB::setEdgeThreshold(int)
     CV_WRAP virtual void setEdgeThreshold(int edgeThreshold) = 0;
                          ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:302:25: note:   virtual int cv::ORB::getEdgeThreshold() const
     CV_WRAP virtual int getEdgeThreshold() const = 0;
                         ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:304:26: note:   virtual void cv::ORB::setFirstLevel(int)
     CV_WRAP virtual void setFirstLevel(int firstLevel) = 0;
                          ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:305:25: note:   virtual int cv::ORB::getFirstLevel() const
     CV_WRAP virtual int getFirstLevel() const = 0;
                         ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:307:26: note:   virtual void cv::ORB::setWTA_K(int)
     CV_WRAP virtual void setWTA_K(int wta_k) = 0;
                          ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:308:25: note:   virtual int cv::ORB::getWTA_K() const
     CV_WRAP virtual int getWTA_K() const = 0;
                         ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:310:26: note:   virtual void cv::ORB::setScoreType(int)
     CV_WRAP virtual void setScoreType(int scoreType) = 0;
                          ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:311:25: note:   virtual int cv::ORB::getScoreType() const
     CV_WRAP virtual int getScoreType() const = 0;
                         ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:313:26: note:   virtual void cv::ORB::setPatchSize(int)
     CV_WRAP virtual void setPatchSize(int patchSize) = 0;
                          ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:314:25: note:   virtual int cv::ORB::getPatchSize() const
     CV_WRAP virtual int getPatchSize() const = 0;
                         ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:316:26: note:   virtual void cv::ORB::setFastThreshold(int)
     CV_WRAP virtual void setFastThreshold(int fastThreshold) = 0;
                          ^
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:317:25: note:   virtual int cv::ORB::getFastThreshold() const
     CV_WRAP virtual int getFastThreshold() const = 0;
                         ^
jni/NativeVision/vision.cpp: In function 'cv::Ptr<cv::ORB> getTrainerDetector(int)':
jni/NativeVision/vision.cpp:29:76: error: cannot allocate an object of abstract type 'cv::ORB'
     Ptr<ORB> detector2 = new ORB(DEFAULT_QUERY_FEATURES, 1.2f, 5U, 10, 1, 2);
                                                                            ^
In file included from C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/calib3d.hpp:48:0,
                 from C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/calib3d/calib3d.hpp:48,
                 from jni/NativeVision/vision.h:2,
                 from jni/NativeVision/vision.cpp:1:
C:\Users\rabbia\Downloads\OpenCV300androidsdk1\OpenCV-android-sdk\sdk\native\jni\include/opencv2/features2d.hpp:254:20: note:   since type 'cv::ORB' has pure virtual functions
 class CV_EXPORTS_W ORB : public Feature2D
                    ^
jni/NativeVision/vision.cpp: In function 'cv::Mat trainImage(const cv::Mat&, cv::Ptr<cv::ORB>&, cv::Ptr<cv::DescriptorMatcher>&)':
jni/NativeVision/vision.cpp:149:24: error: 'class cv::ORB' has no member named 'operator()'
     detector->operator()( img, cv::noArray(), keypoints, descriptors, false );
                        ^
jni/NativeVision/vision.cpp: In function 'RecognitionResult recognize(const cv::Mat&, bool, cv::Mat*, cv::Ptr<cv::ORB>&, cv::Ptr<cv::DescriptorMatcher>&, std::vector<std::basic_string<char> >&, bool, int*)':
jni/NativeVision/vision.cpp:177:24: error: 'class cv::ORB' has no member named 'operator()'
     detector->operator()( queryImg, cv::noArray(), queryKeypoints, queryDescriptors, false );
                        ^
make.exe: *** [obj/local/armeabi-v7a/objs/native_wallet/NativeVision/vision.o] Error 1

Please help me out with this.


回答1:


  1. for LOGD(), use

    LOGD("%s", out.str().c_str());

  2. to get Ptr<ORB> detector1, you should use ORB::create(), not new ORB().



来源:https://stackoverflow.com/questions/33256159/android-ndk-giving-errors-while-compiling-in-eclipse

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!