我正在使用 NDK 将 C++/OpenCV 代码导入到 Android 应用程序中。首先,我必须说,我没有学过编程,我只是一个业余开发人员,所以有很多事情我无法管理(特别是编码之外的事情)。
我使用 QtCreator 来编写 C++/OpenCV 代码,并在 Project.pro 中编写了这一行:
INCLUDEPATH += path/to/OpenCV/main/dir #OpenCV-3.1.0
LIBS += -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc
现在,我正在尝试制作一个“Hello World!” app 只是为了确保我可以使用我的 C++ 源代码进行编译。
根据https://developer.android.com/ndk/guides/android_mk.html https://developer.android.com/ndk/guides/android_mk.html,我写了这个简单的Android.mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myModule
LOCAL_CFLAGS += -I /path/to/OpenCV/main/dir
LOCAL_LDLIBS := -lopencv_core
LOCAL_SRC_FILES := bar.cpp
include $(BUILD_SHARED_LIBRARY)
在 bar.cpp 中,我有:
#include <opencv2/core/core.hpp>
只是为了检查编译器是否可以找到源代码。当我尝试使用 ndk-build 构建 C++/OpenCV 本机代码时,我得到:
non-system libraries in linker flags: -lopencv_core
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the current module
我尝试使用 LOCAL STATIC_LIBRARIES 和 LOCAL_SHARED_LIBRARIES,但没有成功。有任何想法吗?
P.S.:
重要的是,我按照这个示例使用 NDK(不包含任何 OpenCV 标头)编译了一个简单的 Hello worldhttps://gist.github.com/gnuanu/252fd406f48f7da2c1c7 https://gist.github.com/gnuanu/252fd406f48f7da2c1c7.
这里有一个帖子Android.mk:如何包含 ffmpeg 和 Opencv https://stackoverflow.com/questions/14559034/android-mk-how-to-include-ffmpeg-and-opencv,但它没有答案,我无法用信息解决......