【问题标题】:Error in importing opencv c++ file using cmake使用cmake导入opencv c++文件时出错
【发布时间】:2021-05-17 12:01:04
【问题描述】:

opencv 已在我的项目中设置,但导入的 c++ 文件出错

FAILURE: Build failed with an exception.
  • 出了什么问题: 任务“:app:externalNativeBuildDebug”执行失败。

构建命令失败。 执行进程 C:\src\Android\Sdk\cmake\3.10.2.4988404\bin\ninja.exe 时出错,参数为 {-CC:\Users\azad prajapat\AndroidStudioProjects\sunscape\sunscape\android\app.cxx\cmake\调试\armeabi-v7a 本机全景} ninja: 进入目录`C:\Users\azad prajapat\AndroidStudioProjects\sunscape\sunscape\android\app.cxx\cmake\debug\armeabi-v7a' [1/2] 构建CXX对象CMakeFiles/native-panorama.dir/src/main/jni/com_example_sunscape_NativePanorama.cpp.o 失败:CMakeFiles/native-panorama.dir/src/main/jni/com_example_sunscape_NativePanorama.cpp.o C:\src\Android\Sdk\ndk\22.0.7026061\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi24 --gcc-toolchain=C:/ src/Android/Sdk/ndk/22.0.7026061/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=C:/src/Android/Sdk/ndk/22.0.7026061/toolchains/llvm/prebuilt/windows-x86_64/ sysroot -Dnative_panorama_EXPORTS -I../../../../src/main/jniIncludes -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -std=gnu++11 -Wno-error=format-security -frtti -fexceptions -stdlib=libstdc++ -O0 -fPIC -MD - MT CMakeFiles/native-panorama.dir/src/main/jni/com_example_sunscape_NativePanorama.cpp.o -MF CMakeFiles\native-panorama.dir\src\main\jni\com_example_sunscape_NativePanorama.cpp.od -o CMakeFiles/native-panorama.dir /src/main/jni/com_example_sunscape_NativePanorama.cpp.o -c ../../../../src/main/jni/com_example_sunscape_NativePanorama.cp p 在 ../../../../src/main/jni/com_example_sunscape_NativePanorama.cpp:3 包含的文件中: 在 ../../../../src/main/jniIncludes\opencv2/opencv.hpp:52 包含的文件中: 在 ../../../../src/main/jniIncludes\opencv2/core.hpp:52 包含的文件中: **../../../../src/main/jniIncludes\opencv2/core/cvdef.h:183:10:致命错误:找不到“限制”文件 #include

生成 1 个错误。** ninja:构建停止:子命令失败。

我的 cmake 文件

    cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
SET(CMAKE_EXE_LINKER_FLAGS  "-lopencv_stitching")
include_directories(${CMAKE_SOURCE_DIR}/src/main/jniIncludes)

add_library(native-panorama
            SHARED
        src/main/jni/com_example_sunscape_NativePanorama.cpp)
add_library(lib_opencv SHARED IMPORTED)
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/src/main/libs/${ANDROID_ABI}/libopencv_java4.so)
find_library(log-lib
                log)
target_link_libraries(native-panorama ${log-lib} lib_opencv)

gradle 文件

externalNativeBuild {
            cmake {
                arguments "-DANDROID_TOOLCHAIN=clang++","-DANDROID_ARM_NEON=TRUE" ,"-DANDROID_STL_FORCE_FEATURES=OFF"
                cppFlags "-std=gnu++11", "-Wno-error=format-security","-frtti -fexceptions"
            }
        }
        ndk {
             abiFilters 'x86', 'x86_64', 'armeabi-v7a',
                    'arm64-v8a'
        }

【问题讨论】:

  • 只是猜测,limits.h 是一个 c 头,检查它是否存在于标准包含路径中,如 /usr/include

标签: c++ opencv cmake android-ndk


【解决方案1】:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")

不要那样做。

【讨论】:

    猜你喜欢
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多