未找到 Android Studio 'opencv2/core/core.hpp' 文件

Posted

技术标签:

【中文标题】未找到 Android Studio \'opencv2/core/core.hpp\' 文件【英文标题】:Android Studio 'opencv2/core/core.hpp' file not found未找到 Android Studio 'opencv2/core/core.hpp' 文件 【发布时间】:2017-03-19 18:42:43 【问题描述】:

我正在使用 android Studio 2.3 并遇到致命错误:找不到“opencv2/core/core.hpp”文件

我看到很多类似的问题不是构建 Android.mk,但我的 Android.mk 应该已经构建了。

如果在Android.mk中更改OpenCV.mk的包含路径会报文件未找到错误,所以我认为Android.mk已经包含在构建过​​程中并且文件路径是正确的。

如果包含路径正确,OpenCV.mk 应该会找到文件夹 opencv2 但我仍然收到文件未找到错误。

还有其他方法可以在 Android Studio 中设置包含路径吗?

我的构建脚本有什么问题?

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)

应用程序.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

【问题讨论】:

【参考方案1】:

您是否将 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'

【讨论】:

是的,OpenCVLibrary320 是在 project_structure->dependencies 中导入的,范围是编译我很抱歉我提供的丑陋的 android.mk,在按照建议更改 Android.mk 和 build.gradle 后仍然不起作用。 native-lib.so 在项目文件夹中直接执行带有参数的ndk-build.cmd 时生成成功,但在Android Studio 中仍然出现“致命错误:'opencv2/core/core.hpp' 文件不存在找到” 安装Opencv后,检查系统环境变量Path中是否给出了安装目录。 我从 opencv.org/releases.html 下载了 opencv "android pack" 并在 F:\OpenCV-android-sdk 下解压缩我应该添加 F:\OpenCV-android-sdk\sdk\native\jni\include 到系统环境变量路径? 添加F:\OpenCV-android-sdk\sdk\native\jni\include到windows->属性->高级系统设置->高级->环境变量->路径后,重启android工作室,还是不行

以上是关于未找到 Android Studio 'opencv2/core/core.hpp' 文件的主要内容,如果未能解决你的问题,请参考以下文章

未找到 Android Studio 映像

Android Studio 附加到进程未找到本机符号

SDK位置未找到 - Android Studio

未找到 Android API 24 平台的源 (Android Studio 2.1)

更新后android studio中的资源错误:未找到资源

未找到 Android Studio 'opencv2/core/core.hpp' 文件