C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 对`cv :: DescriptorMatcher :: knnMatch的未定义引用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在 android工作室项目中使用opencv本机库.我为函数knnMatch的未定义引用收到错误. @H_404_7@

@H_404_7@我已将openCVLibrary@L_618_5@到我的项目中,并成功使用其他openCV功能.

@H_404_7@>是否有具体使用libopencv_features2d的原因?
>编译和链接features2d的正确方法是什么?

@H_404_7@更新:@L_618_5@我的编译文件

@H_404_7@我的应用build.gradle:

@H_404_7@

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
}
@H_404_7@我的CMakeList.txt:

@H_404_7@

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 ${CR_398_11845@AKE_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 )
@H_404_7@在我的jniLibs中 – > arm64-v8a我有那些cv libs:

@H_404_7@

@H_404_7@正如我所说的其他cv函数,如cv :: solvePnP工作正常.
只有KnnMatch扔未定型.

@H_404_7@更新:如果我删除-DANDROID_STL = c _shared我可以编译knnMatch但我需要它,任何建议?

解决方法

嗨这显然是一个链接错误.在编译@L_616_31@时,无法包含或链接您从​​外部库引用的方法.在编译期间,链接器在所有库中查找对该方法的引用,如果它在库或obj文件中找不到该方法定义,则会给出此错误.如果您使用的是make文件,请检查是否已在其中正确@L_618_5@了所需的库.还要检查库是否已设置为路径环境变量.

大佬总结

以上是大佬教程为你收集整理的c – 对`cv :: DescriptorMatcher :: knnMatch的未定义引用全部内容,希望文章能够帮你解决c – 对`cv :: DescriptorMatcher :: knnMatch的未定义引用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。