【问题标题】:Fatal error: 'ext/atomicity.h' file not found using OpenCV 2.4.11致命错误:使用 OpenCV 2.4.11 找不到“ext/atomicity.h”文件
【发布时间】:2018-11-04 04:26:51
【问题描述】:

我发现问题可能出在标准库上……但我不知道如何使用 Cmake 更改它。 我尝试了很多选项,但都不起作用。

我的build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.test"
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags "-frtti -fexceptions"
                abiFilters "armeabi-v7a"
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
        }
    }
    sourceSets { main { jni.srcDirs = ['src/main/cpp', 'src/main/jniLib/'] } }
}

dependencies {
    implementation project(':openCVLibrary2411')
}

而我的 CMMakeList.txt 看起来像这样:

cmake_minimum_required(VERSION 3.4.1)

#set(ANDROID_STL "c++_shared")

set(CMAKE_INCLUDE_CURRENT_DIR ON)

# OpenCV IMPORT
include_directories(C:/OpenCV-android-sdk_2_4_11/sdk/native/jni/include)
add_library( lib-opencv SHARED IMPORTED )
set_target_properties(lib-opencv PROPERTIES IMPORTED_LOCATION  ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libopencv_java.so)

add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             native-lib.cpp
             main.cpp
             )

find_library( # Sets the name of the path variable.
              log-lib

              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )

target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

我检查了this link,但用于 ndk-build... 但我正在使用 cmake (Android Studio 3+)

【问题讨论】:

    标签: android c++ opencv cmake android-ndk


    【解决方案1】:

    你对的问题是因为 stl [libc++]

    https://stackoverflow.com/a/13037661/5052296

    要更改 build.gradle 中的 STL:

        externalNativeBuild {
            cmake {
                arguments '-DANDROID_STL=gnustl_shared'
            }
        }
    

    https://developer.android.com/ndk/guides/cmake


    另一种选择:

    编辑“include/opencv2/core/operations.hpp”文件。

    【讨论】:

    • 谢谢!参数“-DANDROID_STL=gnustl_shared”运行良好。现在我在链接时有另一个:错误:未定义的对'cv::solve(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2016-06-17
    • 2020-10-02
    • 2015-01-20
    • 2014-12-21
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多