android - (Android opencv) undefined reference `cv::DescriptorMatcher::knnMatch`

标签 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 {--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.

好像链接器错误,但我无法解决。 有谁知道吗?

最佳答案

我自己解决了。

如果你使用 Android sdk 和 CMAKE,你可以改变你的编译方法(?)CMAKE 到 Android.mk

那么,你可以..

关于android - (Android opencv) undefined reference `cv::DescriptorMatcher::knnMatch`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50502166/

相关文章:

android - 如何为 Activity 应用浅色主题并同时为对话框保留深色主题?

c++ - OpenCV中图像矩阵的子区域

c++ - 计算平均值 : different result for masked image vs ROI

linker - 无法在 OpenCV 3.0.0 中使用 SurfFeatureDetector

opencv - SURF OpenCV - 预定义点的 SURF 描述符

python - 删除对象边缘的关键点

java - 比较器<Object> 可打包

android - 在应用程序还原时在 fragment 中设置监听器实例

android - 如何从 CI 的服务帐户访问 Android 虚拟设备 (AVD)?

c++ - Opencv:向后扭曲