2017-03-19 24 views
1

我使用過Android Studio 2.3,並得到致命錯誤:「opencv2 /核心/ core.hpp」找不到文件的Android工作室「opencv2 /核心/ core.hpp」找不到文件

我看到很多類似的問題,即不是構建Android.mk,但我的Android.mk應該已經構建好了。

如果在Android.mk中更改包含OpenCV.mk的路徑,它會報告找不到文件的錯誤,所以我認爲Android.mk已經包含在構建過​​程中,並且文件路徑是正確的。

如果包含路徑是正確的,OpenCV.mk應該找到文件夾opencv2,但我仍然得到文件未找到錯誤。

有沒有其他方法可以在Android Studio中設置包含路徑?

我的構建腳本有什麼問題?

母語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 
     } 
} 

文件結構如下

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

回答

0

你有沒有導入OpenCV庫作爲一個模塊,您可以在嘗試這樣Android.mk文件

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) 

的build.gradle下的命令行你可以像這樣添加,

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' 
+0

是的,OpenCVLibrary320被導入到project_structure-> dependencies中e範圍編譯 我很抱歉我提供的醜陋android.mk,更改後Android.mk和build.gradle建議仍然無法正常工作。 –

+0

native-lib.so當直接執行ndk-build.cmd與參數在項目文件夾,但在Android Studio仍然得到「致命錯誤:'opencv2/core/core.hpp'文件未找到」 –

+0

生成成功後安裝Opencv,請檢查您在系統的環境變量**路徑**中是否已安裝了目錄。 – Gowthaman