NDK - 包括错误

NDK - include error

我需要你的帮助,因为这让我发疯。是什么导致了我的错误?

错误是

"jni/algorithm.cpp:4:33: fatal error: opencv2/core/core.hpp: No such file or directory  #include <opencv2/core/core.hpp>
                                 ^ compilation terminated. make: *** [obj/local/arm64-v8a/objs/algorithm/algorithm.o] Error 1"

我的 algorithm.cpp 是:

#include <jni.h>
#include <string.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc_c.h"

using namespace std;
using namespace cv;

extern "C"
{
    JNIEXPORT jlong JNICALL Java_com_example_hematoma_MainActivity_fce(JNIEnv *env, jobject obj, jlong matimage)
          {
              Mat *jni_image  = (Mat*) matimage;

              return (jlong)jni_image;

          }
}

我的Android.mk是:

LOCAL_PATH := $(call my-dir)

include /home/nemesis/adt-bundle-linux-x86_64-20140702/OpenCV-2.4.10-android-sdk/sdk/native/jni/OpenCV.mk

include $(CLEAR_VARS)
LOCAL_MODULE := algorithm
LOCAL_SRC_FILES := algorithm.cpp

LOCAL_C_INCLUDE := /home/nemesis/adt-bundle-linux-x86_64-20140702/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/opencv2/core/core.hpp
LOCAL_C_INCLUDE += /home/nemesis/adt-bundle-linux-x86_64-20140702/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/
include $(BUILD_SHARED_LIBRARY)

ndk 尝试构建 .so 时出现错误

提前致谢。

因此,我尝试将项目属性 C/C++ Build -> Build 命令从 ${NDKROOT}/ndk-build 更改为 ${NDKROOT}/ndk-build.cmd 并且它解决了我所有的包含库错误。奇怪

LOCAL_C_INCLUDE := /home/nemesis/adt-bundle-linux-x86_64-20140702/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/opencv2

应该是

LOCAL_C_INCLUDES := /home/nemesis/adt-bundle-linux-x86_64-20140702/OpenCV-2.4.10-android-sdk/sdk/native/jni/include

即,它是复数,应该指向以下位置的相对路径:

#include <opencv2/core/core.hpp>

我通过将 LOCAL_LDLIBS += -llog -ldl 添加到 "Android.mk"

解决了我的问题
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include C:/.../OpenCV-3.1.0-android-sdk/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk

LOCAL_MODULE    := Testappcv
LOCAL_SRC_FILES := Testappcv.cpp
LOCAL_LDLIBS +=  -llog -ldl 

include $(BUILD_SHARED_LIBRARY)

并将 "Application.mk" 文件添加到 jni 文件夹

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-8