vic*_*cky 5 android opencv gradle android-ndk android-studio-2.2
我在使用Android Studio 2.2的原生OpenCv 3.0.0时遇到了麻烦,新的ndk支持即使用CMAKE构建脚本.以下是我得到的错误.我在我的gradel或cmake文件中遗漏了什么?请告诉我.
错误:FAILURE:构建因异常而失败.
构建命令失败.使用参数{--build E:\ OpenCvAndroid\OPecvTry2CSupport\app.externalNativeBuild\cmake \执行'C:\ Users\User\AppData\Local\Android\sdk\cmake\3.6.3155560\bin\cmake.exe'时出错debug\mips64 --target native-lib} [1/1]链接CXX共享库..\_ obj\mips64\libnative-lib.so失败:cmd.exe/C"cd.&& C:\ Users\User\AppData\Local\Android\sdk \ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang ++.exe -target mips64el-none-linux-android -gcc-toolchain C:/ Users/User/AppData/Local/Android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/windows-x86_64 --sysroot = C:/ Users/User/AppData/Local/Android/sdk/ndk-bundle/platforms/android- 21/arch-mips64 -fPIC -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa, - noexecstack -Wformat -Werror = format-security -fno-exceptions - fno-rtti -O0 -fno-limit-debug-info -Wl, - build-id -Wl, - warn-shared-textrel -Wl, - fatal-warnings -Wl, - no-undefined -Wl, -z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libnative-lib.so -o ..\obj\mips64\libnative-lib.so CMakeFiles/native-lib.dir/src /main/cpp/native-lib.cpp.o -llog -lm"C:/ Users/User/AppData/Local/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc ++/4.9/libs/mips64/libgnustl_static.a"&& cd." CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o:在函数
~Mat': E:/OpenCVSdk/sdk/native/jni/include\opencv2/core/mat.hpp:278: undefined reference tocv :: fastFree(void*)'CMakeFiles/native-lib.dir/src/main/cpp/native-lib .cpp.o:在函数cv::Mat::release()': E:/OpenCVSdk/sdk/native/jni/include\opencv2/core/mat.hpp:367: undefined reference tocv :: Mat :: deallocate()'clang ++.exe:错误:链接器命令失败,退出代码为1(使用-v查看调用)ninja:build stopped:子命令失败.
还有我的Cmake.txt
cmake_minimum_required(VERSION 3.4.1)
add_library( native-lib
SHARED
src/main/cpp/native-lib.cpp )
include_directories(E\:\\OpenCVSdk\\sdk\\native\\jni\\include )
find_library( log-lib log )
target_link_libraries(native-lib ${log-lib} )
Run Code Online (Sandbox Code Playgroud)
还有我的Gradel Build文件
{ apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "viki.opecvtry2csupport"
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags ""
}
}
}
Run Code Online (Sandbox Code Playgroud)
设置OpenCV_DIR对我来说适用于 OpenCV 3.1 和 AS 2.2 以及最新的 Gradle 插件。这是我的 CMakeLists.txt 的相关部分。
cmake_minimum_required(VERSION 3.6)
SET(OpenCV_DIR $ENV{HOME}/AndroidDevelopment/opencv-3.1.0/sdk/native/jni)
find_package(OpenCV REQUIRED)
message(STATUS "opencv found: ${OpenCV_LIBS}")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${OpenCV_DIR}/include/)
[...]
target_link_libraries(myTarget log ${OpenCV_LIBS} m z android )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5279 次 |
| 最近记录: |