(Android opencv)对`cv::DescriptorMatcher::knnMatch'的未定义引用`

(Android opencv)对`cv::DescriptorMatcher::knnMatch'的未定义引用`,android,opencv,surf,Android,Opencv,Surf,我通过jni(带有contrib的OpenCV)编译我的Android项目 一切都很好,但我有一个问题。每个源代码都做得很好,但只有cv::DescriptorMatcher::knnMatch不是 以下是我的生成错误: Build command failed. Error while executing process C:\Users\user\AppData\Local\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe with arguments

我通过jni(带有contrib的OpenCV)编译我的Android项目

一切都很好,但我有一个问题。每个源代码都做得很好,但只有cv::DescriptorMatcher::knnMatch不是

以下是我的生成错误:

Build command failed.
Error while executing process C:\Users\user\AppData\Local\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build C:\Users\user\AndroidStudioProjects\MyApplication5\app\.externalNativeBuild\cmake\debug\arm64-v8a --target native-lib}
[1/1] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\arm64-v8a\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=aarch64-none-linux-android --gcc-toolchain=C:/Users/user/AppData/Local/Android/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 --sysroot=C:/Users/user/AppData/Local/Android/Sdk/ndk-bundle/sysroot -fPIC -isystem C:/Users/user/AppData/Local/Android/Sdk/ndk-bundle/sysroot/usr/include/aarch64-linux-android -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11  -std=gnu++11 -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ --sysroot C:/Users/user/AppData/Local/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm64 -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -LC:/Users/user/AppData/Local/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/arm64-v8a     -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libnative-lib.so -o ..\..\..\..\build\intermediates\cmake\debug\obj\arm64-v8a\libnative-lib.so CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o  ../../../../src/main/JniLibs/arm64-v8a/libopencv_java3.so -llog -latomic -lm "C:/Users/user/AppData/Local/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_static.a" "C:/Users/user/AppData/Local/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++abi.a" && cd ."
CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o: In function `Java_com_example_user_myapplication_MainActivity_SurfTest':
C:\Users\user\AndroidStudioProjects\MyApplication5\app\src\main\cpp/native-lib.cpp:191: undefined reference to `cv::DescriptorMatcher::knnMatch(cv::_InputArray const&, cv::_InputArray const&, std::__ndk1::vector<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> >, std::__ndk1::allocator<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> > > >&, int, cv::_InputArray const&, bool) const'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Build命令失败。
执行进程C:\Users\user\AppData\Local\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe时出错,参数为{--build C:\Users\user\AndroidStudioProjects\MyApplication5\app\.externalNativeBuild\cmake\debug\arm64-v8a--target native lib}
[1/1]链接CXX共享库..\\..\build\mediates\cmake\debug\obj\arm64-v8a\libnative-lib.so
失败:cmd.exe/C"光碟,C:\Users\user\AppData\Local\Android\Sdk\ndk bundle\toolschains\llvm\prebuild\windows-x86\u 64\bin\clang++.exe--target=aarch64 none-linux-Android--gcc toolschain=C:/Users/user/AppData/Local/Android/Sdk/ndk bundle/toolschains/aarch64-linux-Android-4.9/prebuild/windows-x86\u 64--sysroot=C:/Users/user/user/AppData/Local/AppData/Android/Sdk bundle/ndle/sysroot-fPIC-isystem C:/Users/user/AppData/Local/Android/Sdk/ndk bundle/sysroot/usr/include/aarch64 linux-Android-Dèu-Androidèu-APIèu=21-g-DANDROID-ffunction-sections-funwind tables-fstack-protector-strong-无规范前缀-Wa,--noexeccstack-Wformat-Werror=格式安全性-std=C++=11-O0-fno-limit调试信息-Wl,--排除libs,libgcc.a-Wl,-排除libs,libatomic.a-nostlib++--sysroot C:/Users/user/AppData/Local/Android/Sdk/ndk bundle/platforms/Android-21/arch-arm64-Wl,-build id-Wl,-warn shared textrel-Wl,-致命警告-LC:/Users/user/AppData/Local/Android/Sdk/ndk bundle/sources/cxx stl/llvm libc++/libs/arm64-v8a-Wl,-无未定义的-Wl,-,-,-,--z,noexecstack-Qunused arguments-Wl,-z,relro-Wl,-z,now-shared-Wl,-soname,libnative-lib.so-o….\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ build\mediates\cmake\debug\obj\arm64-v8a\libnative-lib.so-CMakeFiles/native-lib/src/main/cpp/native-lib.cpp.o../../../../../../../src/main/jnilibmain/jnilib/jnilib“C:/Users/user/AppData/Local/Android/Sdk/ndk bundle/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++\u static.a”“C:/Users/user/AppData/Local/Android/Sdk/ndk bundle/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++.a”&&cd。”
cmakfiles/native lib.dir/src/main/cpp/native lib.cpp.o:在函数“Java\u com\u example\u user\u myapplication\u main activity\u SurfTest”中:
C:\Users\user\AndroidStudioProjects\MyApplication5\app\src\main\cpp/native lib.cpp:191:cv::DescriptorMatcher::knnMatch的未定义引用
clang++.exe:错误:链接器命令失败,退出代码为1(使用-v查看调用)
忍者:构建停止:子命令失败。
这似乎是链接器错误,但我无法解决它。 谁知道呢?

我自己解决了

如果将Android sdk与CMAKE一起使用,则可以将编译方法(?)CMAKE更改为Android.mk


那么,你可以..

你可以在这里分享你的Android.mk和Application.mk文件吗?我遇到了同样的问题