c – 对`cv :: DescriptorMatcher :: knnMatch的未定义引用
我正在尝试在
android工作室项目中使用opencv本机库.我为函数knnMatch的未定义引用收到错误.
我已将openCVLibrary添加到我的项目中,并成功使用其他openCV功能. >是否有具体使用libopencv_features2d的原因? 更新:添加我的编译文件 我的应用build.gradle: apply plugin: 'com.android.application' // android { compileSdkVersion 27 buildToolsVersion '27.0.3' // defaultConfig { minSdkVersion 21 targetSdkVersion 27 ... externalNativeBuild { cmake { arguments "-DANDROID_ARM_NEON=TRUE","-DANDROID_TOOLCHAIN=clang","-DANDROID_STL=c++_static","-DCMAKE_BUILD_TYPE=Release","-DANDROID_CPP_FEATURES=rtti exceptions" cppFlags "-D__STDC_FORMAT_MACROS",'-O3','-fopenmp','-fsigned-char',"-std=c++14","-frtti","-fexceptions","-mfloat-abi=softfp","-Wall" } ndk { abiFilters 'arm64-v8a' } } } // externalNativeBuild { cmake { path "CMakeLists.txt" } } ... } // dependencies { compile fileTree(include: ['*.jar'],dir: 'libs') implementation project(':openCVLibrary340') //Module } 我的CMakeList.txt: cmake_minimum_required(VERSION 3.4.1) # include_directories(/.../OpenCV-android-sdk/sdk/native/jni/include) add_library( libopencv SHARED IMPORTED ) set_target_properties(libopencv PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so) # FILE(GLOB CPP_SRC "src/main/cpp/*.c" "src/main/cpp/*.h" "src/main/cpp/*.cpp" "src/main/cpp/*.hpp" ) # add_library( myLib SHARED ${CPP_SRC} ) # find_library( log-lib log ) # target_link_libraries( myLib libopencv ${log-lib} ) target_link_libraries( myLib android log EGL GLESv2 ) 在我的jniLibs中 – > arm64-v8a我有那些cv libs:
正如我所说的其他cv函数,如cv :: solvePnP工作正常. 更新:如果我删除-DANDROID_STL = c _shared我可以编译knnMatch但我需要它,任何建议? 解决方法
嗨这显然是一个链接错误.在编译代码时,无法包含或链接您从??外部库引用的方法.在编译期间,链接器在所有库中查找对该方法的引用,如果它在库或obj文件中找不到该方法定义,则会给出此错误.如果您使用的是make文件,请检查是否已在其中正确添加了所需的库.还要检查库是否已设置为路径环境变量.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |