【发布时间】: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