2016-09-24 14 views
5

Yeni ndk desteği ile yerli OpenCv 3.0.0'ı kullanmakta zorlanıyorum. Aşağıda, aldığım hata var. Gradel veya cmake dosyamda herhangi bir şey eksik miyim? Lütfen bana haber ver. Yanlış giden neAndroid Studio ile OpenCv 2.2+ cmake ile yeni gradel kullanma - undefined reference

Error:FAILURE: Build failed with an exception.

  • : Yürütme görev için başarısız oldu ': app: externalNativeBuildDebug'. OpenCV_DIR Ayar

    Build command failed. Error while executing 'C:\Users\User\AppData\Local\Android\sdk\cmake\3.6.3155560\bin\cmake.exe' with arguments {--build E:\OpenCvAndroid\OPecvTry2CSupport\app.externalNativeBuild\cmake\debug\mips64 --target native-lib} [1/1] Linking CXX shared library ..\obj\mips64\libnative-lib.so FAILED: 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: In function ~Mat': E:/OpenCVSdk/sdk/native/jni/include\opencv2/core/mat.hpp:278: undefined reference to cv::fastFree(void*)' CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o: In function cv::Mat::release()': E:/OpenCVSdk/sdk/native/jni/include\opencv2/core/mat.hpp:367: undefined reference to cv::Mat::deallocate()' clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed.

Ve 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}) 

Ve Gradel kurmak dosya

{ 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 "" 

     } 
    } 
} 
+0

dizin gerektiğini dahil Link Gradle to your native library

benim tam CMakeList.txt unutma

target_link_libraries( native-lib lib_opencv #Just add the lib_opencv ${log-lib}) 

target_link_libraries eklemedeki tarafından sorunumu "lib_opencv" lib sabit Cmake sözdizimi ile kal, düşündüm: include_directories (yol/to/sizin/sdk/native/jni/include) target_link_libraries (native-lib günlüğü) – Gerry

+0

İçe aktarılan ffmpeg paylaşılan kitaplığı ile benzer bir sorunu yaşıyorum, çözüm buldunuz mu? –

+0

Yine de bir çözüm bulamadım – vicky

cevap

2

OpenCV 3.1 ile benim için çalıştı ve oldu 2.2 AS ve son Gradle eklentisi. Bu benim CMakeLists.txt'imin ilgili bitidir.

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) 
+0

'' 'include_directories (...)' '' CMake kullanıldıysa gerekli değil = = 2.8.11 OpenCV derlemek için – ahasbini

3

Ben

cmake_minimum_required(VERSION 3.4.1) 

add_library(native-lib 
      SHARED 
      src/main/cpp/native-lib.cpp) 

find_library(log-lib 
       log) 

target_link_libraries(native-lib lib_opencv 
         ${log-lib}) 

set(CMAKE_VERBOSE_MAKEFILE on) 
add_library(lib_opencv SHARED IMPORTED) 
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION /PROJECT_PATH/openCVLibrary320/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so) 

include_directories(/OpenCV-android-sdk/sdk/native/jni/include) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") 
İlgili konular