在以下行中获取未定义的引用:
mSiftEx = xfeatures2d::SiftFeatureDetector::create(features, octaveLayers,
contrastThreshold, edgeThreshold, sigma);
我使用的是自定义Android NDK makefile,如下所示:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
include /opt/opencv-android/sdk/native/jni/OpenCV.mk
LOCAL_C_INCLUDES := /src/main/jni /usr/local/include
LOCAL_MODULE := SIFT
LOCAL_SRC_FILES := mSIFT.cpp
LOCAL_LDLIBS += -llog -std=c++11
LOCAL_LIBRARIES = -L/usr/local/lib \
-lopencv_core \
-lopencv_imgproc \
-lopencv_highgui \
-lopencv_ml \
-lopencv_video \
-lopencv_features2d \
-lopencv_calib3d \
-lopencv_objdetect \
-lopencv_contrib \
-lopencv_legacy \
-lopencv_flann \
-lopencv_xfeatures2d
include $(BUILD_SHARED_LIBRARY)
如果我将以下内容添加到LOCAL_LDLIBS:
-L/usr/local/lib -lopencv_xfeatures2d
它使用以下内容编译,但运行时出现错误:
java.lang.UnsatisfiedLinkError:dlopen失败:未找到库“libopencv_xfeatures2d.so.3.1”
我在Android的x86_64架构上使用OpenCV 3.1。