Android Studio NDK 链接器错误未定义对“cv::_OutputArray::_OutputArray(cv::Mat&)”的引用

2024-04-05

我正在开发一个使用 NDK 的 Android 项目,其中我使用了 opencv 来进行一些捕获和图像效果的工作。我的 Android.mk 如下所示:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

include path/to/OpenCV.mk

LOCAL_MODULE    := Scanner

LOCAL_SRC_FILES := scan.cpp

LOCAL_LDLIBS    += -lz -lm -llog -landroid -ldl -lstdc++

LOCAL_LDFLAGS +=  -ljnigraphics -fexceptions -std=c++11 -L$(LOCAL_PATH)/sdk/native/jni/libs/armeabi-v7a -L$(LOCAL_PATH)/sdk/native/jni/3rdparty/libs/armeabi-v7a -I$(LOCAL_PATH)/sdk/native/jni/include -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/core -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/calib3d -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/contrib -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/features2d -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/flann -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/highgui -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/imgproc -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/legacy -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/ml -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/objdetect -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/ocl -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/photo -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/stitching -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/superres -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/ts -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/video -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/videostab -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2

LOCAL_STATIC_LIBRARIES := opencv_shape opencv_stitching opencv_objdetect opencv_superres opencv_videostab opencv_calib3d opencv_features2d opencv_highgui opencv_videoio opencv_imgcodecs opencv_video opencv_photo opencv_ml opencv_flann opencv_imgproc opencv_core opencv_ts IlmImf libjasper libjpeg libpng libtiff libwebp tbb

include $(BUILD_SHARED_LIBRARY)

虽然我链接了所有 opencv 库并指定了正确的路径(通过更改路径验证),但我收到以下链接器错误:

../sdk/native/jni/include/opencv2/core/mat.hpp:335: error: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat&)'
jni/scan.cpp:33: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const&)'
jni/scan.cpp:33: error: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat&)'
jni/scan.cpp:65: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const&)'
jni/scan.cpp:65: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const&)'
jni/scan.cpp:72: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const&)'
jni/scan.cpp:48: error: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat&)'
jni/scan.cpp:51: error: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat&)'
jni/scan.cpp:58: error: undefined reference to 'cv::findContours(cv::_OutputArray const&, cv::_OutputArray const&, int, int, cv::Point_<int>)'
..sdk/native/jni/include/opencv2/core/mat.hpp:276: error: undefined reference to 'vtable for cv::_OutputArray'
..Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
..sdk/native/jni/include/opencv2/core/mat.hpp:276: error: undefined reference to 'vtable for cv::_OutputArray'
..Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
jni/scan.cpp:162: error: undefined reference to 'cv::findContours(cv::_OutputArray const&, cv::_OutputArray const&, int, int, cv::Point_<int>)'
..sdk/native/jni/include/opencv2/core/mat.hpp:276: error: undefined reference to 'vtable for cv::_OutputArray'
/Users/mtsindia/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
..sdk/native/jni/include/opencv2/core/mat.hpp:276: error: undefined reference to 'vtable for cv::_OutputArray'
..Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
jni/scan.cpp:261: error: undefined reference to 'vtable for cv::_InputArray'
..Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
jni/scan.cpp:296: error: undefined reference to 'cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
jni/scan.cpp:297: error: undefined reference to 'cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
jni/scan.cpp:298: error: undefined reference to 'cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
jni/scan.cpp:299: error: undefined reference to 'cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'

这是link https://github.com/jhansireddy/AndroidScannerDemo我在其中下载了扫描仪应用程序演示并进行了修改scan.cpp文件并尝试重建库。 我已经在 Android studio 中创建了 ndk-build 作为外部工具,也验证了 ndk 路径。我在这里缺少什么?任何帮助,将不胜感激。


修复。我不知道它如何修复的确切原因。我恢复了在 Android.mk 、 Application.mk 和 OpenCV.mk 中所做的所有更改,现在我的 Adnroid.mk 如下所示:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
include $(LOCAL_PATH)/sdk/native/jni/OpenCV.mk

LOCAL_MODULE    := Scanner
LOCAL_SRC_FILES := scan.cpp
LOCAL_LDLIBS    += -lm -llog -landroid
LOCAL_LDFLAGS += -ljnigraphics
include $(BUILD_SHARED_LIBRARY)

和Application.mk:

APP_STL := stlport_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := all
APP_PLATFORM := android-14

这是我的 OpenCV.mk 的样子:

https://pastebin.com/zuqM6tbu https://pastebin.com/zuqM6tbu

我想我错过了指定正确的路径,或者我的库文件(.so 和 .a)可能与包含的头文件版本不同。如果有人有其他想法,请发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio NDK 链接器错误未定义对“cv::_OutputArray::_OutputArray(cv::Mat&)”的引用 的相关文章

随机推荐

  • 确定应用程序是 WinForms 还是 WebForms

    有没有办法在运行时确定运行的应用程序是WinForms还是Web Edit 如果我同时引用两者 实际上是否有问题System Web and System Windows Forms在我的班级图书馆里 概括 迄今为止 到目前为止我学到了什么
  • C# 中的计时器初始化和竞争条件?

    我在里希特的书中看到了这段代码 下面的代码演示了如何进行线程池线程调用 该方法立即启动 然后每 2 秒启动一次 1 internal static class TimerDemo 2 3 private static Timer s tim
  • 是否可以根据模板类型参数的嵌套 typedef 的存在来专门化模板定义?

    我有一个模板 template
  • 不相关的锁定语句之后的读指令是否可以移到锁定之前?

    这个问题是评论的后续this https stackoverflow com questions 40979715 do semaphores prevent instruction reordering thread 假设我们有以下代码
  • 多线程编程中什么是公平性?

    什么是线程公平性或并发 多线程编程中的公平性 我用谷歌搜索过 有很多关于多线程的信息 但不完全是关于公平性的 有人可以解释一下吗 非常欢迎举一个例子 公平性基本上类似于不同线程能够advance无论他们在做什么 100 公平意味着 所有线程
  • 应用 API 响应转换的最佳位置 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在异步操作创建器中 我从服务器获取数据 对于我的用例来说 数据的格式不太好 我需要对其进行转换以在 UI 中使用它 问题 我应该 在数据到达后立
  • MKOverlayRenderer 在地图视图上显示 UIImage

    我正在尝试在 iOS 7 中的地图视图上显示图像 我将 MKOverlayRenderer 子类化如下 MapOverlayRenderer h import
  • Room 未向表中插入数据

    有趣的是 它有时会正确执行插入操作 我不知道为什么以及如何会发生这种情况 所以 我无法弄清楚我在哪里犯了错误 这是我的项目文件 1 SentFilesDao java Dao public interface SentFilesDao Qu
  • 在 VSCode 中通过缩进更改纯文本颜色

    我有兴趣在 VSCode 中进行讲座并在简单的文本文件中做笔记 因为我已经使用它进行编码 然而 对于我的一生 我无法弄清楚如何更改简单的文本颜色 我想要的是在一种缩进深度处具有一种文本颜色 例如 Notes a b Notes会是不同的颜色
  • 删除字符串中空格的最快方法

    我试图从数据库表中的字符串中获取由 分隔的多个电子邮件地址 但它也返回了空格 我想快速删除空格 以下代码确实删除了空格 但每当我尝试在字符串中获取大量电子邮件地址 例如 30000 然后尝试删除它们之间的空格时 它也会变得很慢 删除这些空格
  • 当 Repeater 的委托高度发生变化时调整 ColumnLayout

    我已经设置了一个名为测试1 qml包含以下内容 import QtQuick 2 6 import QtQuick Layouts 1 3 Rectangle width 800 height 1000 ColumnLayout ancho
  • UIViewController 中的扩展边缘属性是什么?

    我在论坛上读过有关此属性的内容 大多数人将此属性设置为 false 或在情节提要中取消选中它 我自己这样做是因为当我在视图中嵌入 UINavigation 控制器时 顶部栏将我的 UITextView 向下推 以便文本在底部开始编辑 取消选
  • C++:如何解决在未知点引起的首次异常?

    我正在处理的一个 C 项目在抛出第一次机会异常时终止 当我第一次尝试访问调试模式下的 Visual Studio 2008 时 会发生这种情况map
  • ActionBarSherlock 堆叠操作栏样式问题

    我不明白为什么堆叠ActionBar我已经实现了最左边的选项卡和屏幕边缘之间有一个间隙 最右侧选项卡的情况并非如此 我尝试通过设计样式来删除分隔线ActionBar 在尝试了一下样式后 我似乎能够覆盖 TabView 样式的属性 但不能覆盖
  • Android 打印堆栈跟踪

    如何在 android 中获得相当于 printStackTrace 的功能 我知道我可以通过将标签名称和字符串传递给日志记录方法来记录错误 但这只会给我一个空指针异常 如果我调用 e printStackTrace 这些数据会打印到哪里
  • LINQ:通过使不同类型的集合可转换/可比较来使用 .Except() ?

    给定两个不同类型的列表 是否可以使这些类型可以相互转换或相互比较 例如使用 TypeConverter 或类似的 以便 LINQ 查询可以比较它们 我在 SO 上看到过其他类似的问题 但没有任何迹象表明可以使类型之间可以相互转换来解决问题
  • Flutter - 在路由之间推送并获取价值

    如何将绿色字符串从 HomePage 页面发送到 ContaPage 页面 我想是这样的Navigator of context pushNamed conta green 但不知道如何进入页面conta the green string
  • mod_rewrite 到文本/类型/id

    我当前的代码是这样的 store php storeid 12 page 3 我想把它翻译成这样 mysite com roberts clothing store store 12 3 和这样的东西 profile php userid
  • 使用 df 获取可用磁盘空间以仅显示可用空间(以 kb 为单位)?

    我正在尝试输出文件系统上的可用磁盘空间量 example 如果我运行命令df k example我可以获得有关可用磁盘空间 以 kb 为单位 的良好信息 但只有通过人类并实际查看它 我需要获取这些数据并在 shell 脚本中的其他地方使用它
  • Android Studio NDK 链接器错误未定义对“cv::_OutputArray::_OutputArray(cv::Mat&)”的引用

    我正在开发一个使用 NDK 的 Android 项目 其中我使用了 opencv 来进行一些捕获和图像效果的工作 我的 Android mk 如下所示 LOCAL PATH call my dir include CLEAR VARS in