为了您的信息,我试图在一个项目中使用dlib,opencv和android studio。虽然做了ndk-build,但是显示了以下错误(部分错误已经给出)
错误
error: undefined reference to dlib::entropy_decoder_kernel_2::decode(unsigned int, unsigned int)'
error: undefined reference to 'dlib::entropy_decoder_kernel_2::get_target(unsigned int)
error: undefined reference to 'dlib::entropy_decoder_kernel_2::get_target(unsigned int)
....................
error: undefined reference to 'dlib::base64::decode(std::istream&, std::ostream&) const
error: undefined reference to 'dlib::base64::~base64()
Android.mk文件的内容为
*LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=STATIC
OPENCV_INSTALL_MODULES:=on
WITH_CUDA=OFF
include /home/sysadmin/ANDROID_PROG_ENVIRONMENTS/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_C_INCLUDES = $(LOCAL_PATH)
LOCAL_C_INCLUDES +=/home/sysadmin/Android/opencv-3.1.0/modules/imgproc/include
LOCAL_C_INCLUDES +=/home/sysadmin/Android/opencv-3.1.0/modules/core/include
LOCAL_C_INCLUDES +=/home/sysadmin/Android/opencv-3.1.0/modules/calib3d/include/
LOCAL_C_INCLUDES +=/home/sysadmin/Android/opencv-3.1.0/modules/features2d/include/
LOCAL_C_INCLUDES +=/home/sysadmin/Android/opencv-3.1.0/modules/flann/include/
LOCAL_C_INCLUDES +=/dlib/dlib/entropy_decoder_model/
LIBS=/dlib/dlib/
LOCAL_MODULE := ImageProcessing
LOCAL_SRC_FILES = ImageProcessing.cpp
LOCAL_SRC_FILES += head_pose_estimation.cpp
LOCAL_LDLIBS := -lm -llog -ldl -lz
LDFLAGS =-ldlib
LOCAL_CPPFLAGS +=-lpthread -lX11 -ggdb -fexceptions -frtti -std=c++11
include $(BUILD_SHARED_LIBRARY)*
答案 0 :(得分:1)
在dlib源文件夹的Android.mk文件中添加它所要求的任何cpp文件作为LOCAL_SRC_FILES。例如,对于您的案例中显示的两个链接错误,请执行以下步骤
LOCAL_SRC_FILES += ../dlib/base64/base64_kernel_1.cpp \
../dlib/entropy_decoder/entropy_decoder_kernel_2.cpp \
这些基本上是您的项目期望来自dlib的链接错误