链接器标志中的非系统库:-lopencv_java3

Non-system libraries in linker flags: -lopencv_java3

我想在 android.mk 文件中包含 OpenCV3 库。所以文件看起来像这样:

android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_EXPORT_C_INCLUDES  := D:\path to\OpenCV-android-sdk\sdk\native\jni\include
include D:\path to\OpenCV-android-sdk\sdk\native\jni\OpenCV.mk

LOCAL_MODULE    := MyLib
LOCAL_SRC_FILES := file1.cpp
LOCAL_SRC_FILES += file2.cpp

OPENGLES_LIB := -lGLESv1_CM
OPENGLES_DEF := -DUSE_OPENGL_ES_1_1
LOCAL_LDLIBS += -lGLESv1_CM -ldl -llog
include $(BUILD_SHARED_LIBRARY)

但是当我构建项目时,我收到了这条警告消息:

Android NDK: WARNING:jni/Android.mk:MyLib: non-system libraries in linker flags: -lopencv_java3    
Android NDK:     This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES    
Android NDK:     or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the    
Android NDK:     current module 

我该如何解决这个问题?

Try using LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the current module

根据您的版本 (static/dylibs),将您的 LOCAL_LDLIBS 更改为 LOCAL_STATIC_LIBRARIESLOCAL_SHARED_LIBRARIES

Android.mk 是对 Android makefile

中变量的很好引用

如果您仅在 C++ 代码中使用 OpenCV,则不需要此 libopencv_java.so。为了表明这一点,添加

OPENCV_LIB_TYPE=STATIC

在包括 OpenCV.mk.

之前

可以在 answers.opencv.org 找到一些解释。