简体   繁体   中英

Android Studio 'opencv2/core/core.hpp' file not found

I am using Android Studio 2.3 and get fatal error: 'opencv2/core/core.hpp' file not found

I saw many similar issues that are not build Android.mk, but my Android.mk should already built.

If change include path of OpenCV.mk in Android.mk it will report file not found error, so I think Android.mk is already included in build process and file path is correct.

If include path is correct, OpenCV.mk should find folder opencv2 but I still get file not found error.

Is there any other way to set include path in Android Studio?

What's wrong in my build script?

native-lib.cpp

#include <DetectionBasedTracker.h>
#include <opencv2/core/core.hpp>
#include <opencv2/contrib/detection_based_tracker.hpp>

Android.mk

LOCAL_PATH := $(call my-dir)

OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include $(LOCAL_PATH)/../../../../../../../../OpenCV-android-sdk/sdk/native/jni/OpenCV.mk

LOCAL_C_INCLUDES+=$(LOCAL_PATH)/../../../../../../../../OpenCV-android-sdk/sdk/native/jni/include/
LOCAL_SRC_FILES := native-lib.cpp
LOCAL_LDLIBS +=  -llog -ldl
LOCAL_MODULE:= native-lib

include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi armeabi-v7a arm64-v8a

build.gradle

android {
          ......
          ......

         sourceSets.main {
              jni.srcDirs = [] //disable automatic ndk-build call
         }

         task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {
              commandLine 'F:\\Android_SDK\\ndk-bundle\\ndk-build.cmd',
              '-C', file('src\\main\\jni').absolutePath,
              'NDK_DEBUG=1',
              'V=1'
         }

         tasks.withType(JavaCompile) {
            compileTask -> compileTask.dependsOn ndkBuild
         }
}

file structure as below

app/src/main/jni/Android.mk
app/src/main/jni/Application.mk
app/src/main/jni/native-lib.cpp
app/build.gradle

Did you import OpenCV Library as a module and Can you try like this in Android.mk file

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

 #opencv

OPENCVROOT:= F:/Android/Libs/OpenCV
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk

LOCAL_SRC_FILES := native-lib.cpp
LOCAL_LDLIBS += -llog
LOCAL_MODULE := MyOpenCVLibs
include $(BUILD_SHARED_LIBRARY)

In build.gradle under command line you can add like this,

commandLine "F:\\Android\\NDK\\android-ndk-r14\\build\\ndk-build.cmd",
                'NDK_PROJECT_PATH=build/intermediates/ndk',
                'NDK_LIBS_OUT=src/main/jniLibs',
                'APP_BUILD_SCRIPT=src/main/jni/Android.mk',
                'NDK_APPLICATION_MK=src/main/jni/Application.mk'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM