Android.mk - 包含 OpenCV 目录,用于使用 NDK 进行本机 C++ 编译

2023-12-21

我正在使用 NDK 将 C++/OpenCV 代码导入到 Android 应用程序中。首先,我必须说,我没有学过编程,我只是一个业余开发人员,所以有很多事情我无法管理(特别是编码之外的事情)。

我使用 QtCreator 来编写 C++/OpenCV 代码,并在 Project.pro 中编写了这一行:

INCLUDEPATH += path/to/OpenCV/main/dir #OpenCV-3.1.0
LIBS += -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc

现在,我正在尝试制作一个“Hello World!” app 只是为了确保我可以使用我的 C++ 源代码进行编译。

根据https://developer.android.com/ndk/guides/android_mk.html https://developer.android.com/ndk/guides/android_mk.html,我写了这个简单的Android.mk文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := myModule
LOCAL_CFLAGS += -I /path/to/OpenCV/main/dir
LOCAL_LDLIBS := -lopencv_core
LOCAL_SRC_FILES := bar.cpp

include $(BUILD_SHARED_LIBRARY)

在 bar.cpp 中,我有:

#include <opencv2/core/core.hpp>

只是为了检查编译器是否可以找到源代码。当我尝试使用 ndk-build 构建 C++/OpenCV 本机代码时,我得到:

non-system libraries in linker flags: -lopencv_core
Android NDK:     This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the current module

我尝试使用 LOCAL STATIC_LIBRARIES 和 LOCAL_SHARED_LIBRARIES,但没有成功。有任何想法吗?


P.S.:

重要的是,我按照这个示例使用 NDK(不包含任何 OpenCV 标头)编译了一个简单的 Hello worldhttps://gist.github.com/gnuanu/252fd406f48f7da2c1c7 https://gist.github.com/gnuanu/252fd406f48f7da2c1c7.

这里有一个帖子Android.mk:如何包含 ffmpeg 和 Opencv https://stackoverflow.com/questions/14559034/android-mk-how-to-include-ffmpeg-and-opencv,但它没有答案,我无法用信息解决......


一、下载适用于 Android 的 OpenCV http://opencv.org/downloads.html。如果您仅使用 OpenCV nativ,则必须在 Android.mk 文件中设置以下内容:

LOCAL_PATH := $(call my-dir)

CVROOT := path_to_opencv/OpenCV-android-sdk/sdk/native/jni

include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=STATIC
include $(CVROOT)/OpenCV.mk

LOCAL_MODULE += myModule

LOCAL_C_INCLUDES += path_to_your_code/bar.h
LOCAL_SRC_FILES += path_to_your_code/bar.cpp 

LOCAL_CFLAGS += -std=c++11 -frtti -fexceptions -fopenmp -w
LOCAL_LDLIBS += -llog -L$(SYSROOT)/usr/lib
LOCAL_LDFLAGS += -fopenmp

include $(BUILD_SHARED_LIBRARY)

最酷的是 OpenCV 提供了 OpenCV.mk makefile,您无需执行任何操作;)

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

Android.mk - 包含 OpenCV 目录,用于使用 NDK 进行本机 C++ 编译 的相关文章

随机推荐

  • 边缘会话.cookie_lifetime

    我的网站功能在 Edge 上损坏 尤其是登录 有人告诉我这与session cookie lifetime 对于此事的任何帮助 我将不胜感激 请注意 我不是开发人员 没有任何代码知识 我的一些 php ini 文件 如果有帮助的话 sess
  • 查找上个月

    我见过一些使用的方法dateutil模块来执行此操作 但是有没有一种方法可以在不使用内置库的情况下执行此操作 例如 当前月份是七月 我可以使用datetime now 功能 python 返回上个月的最简单方法是什么 这很简单 gt gt
  • 是否可以在函数内使用 Excel 数组中的单个单元格引用?

    我有一些数据想要放入 LOGEST 函数中 e g x values 0 463 0 609 0 887 y values 0 05 0 1 0 2 For this example I have put the data into the
  • asyncio 和 trio 之间的核心区别是什么?

    今天 我发现了一个名为trio http trio readthedocs io en latest index html它说它自己是一个供人类使用的异步 API 这些词有点相似requests As requests确实是一个不错的库 我
  • 如何在队列上设置 ActiveMQ redeliveryPolicy?

    如何在队列上的 ActiveMQ 中设置 redeliveryPolicy 1 在文档中 请参阅 activeMQ 重新传送 http activemq apache org redelivery policy html 说明您应该在 Co
  • 如何使用 Microsoft.Graph 将文件附加到 Sharepoint 中的项目

    Microsoft Graph Sharepoint api 允许更新列表项https developer microsoft com en us graph docs api reference beta api listitem upd
  • 1 和 0 的大字符串到 BitSet

    我有一个非常大的字符串 64 个字符 其中包含 1 和 0 样本 1001111111101010011101101011100101001010111000101111011110001000 我想要的只是将其转换为 BitSet var
  • 丰富 SparkContext 而不会引发序列化问题

    我正在尝试使用 Spark 处理来自 HBase 表的数据 这篇博文 http www vidyasource com blog Programming Scala Java Data Hadoop Analytics 2014 01 25
  • 在 Ubuntu 18.10 上安装 ROS Melodic

    I can t是唯一对 Cosmic 与 Wayland 和 Melodic 的组合感兴趣的人 我会坦白说 我似乎已经在 XPS 13 9370 上成功管理了此操作 或者至少安装脚本 最终 成功完成 然而 有一个非常棘手的解决方法 无论结果
  • 当 debug == 0 时如何手动刷新模型缓存?

    每当我在 CakePHP 站点的生产版本上对数据库进行更改 其中调试设置为 0 时 这些更改都不会反映出来 我知道我可以通过暂时将 debug 更改为 2 来解决此问题 但是当大量人访问此站点时 这似乎不安全 我查看了缓存文件 但由于尚无相
  • VS Code 中的 Node.js TypeScript 调试

    有人可以提供 VS Code 配置的示例吗 它允许我 启动 Node js 调试器 编辑任何 TS 文件 看到项目重新编译并重新启动调试器吗 这是开箱即用的支持吗 能nodemon以某种方式被使用 谢谢 是的 您可以使用nodemon 在您
  • 如何加载 ace 编辑器

    我正在尝试使用 Ace 代码编辑器库 http ace ajax org http ace ajax org 但我遇到了麻烦 根据嵌入指南 这应该从 Amazon CDN 加载所需的 js 文件 然而它失败了 在 Chrome 控制台中显示
  • 通过智能 HTTP 推送到 Git 共享存储库的权限不足

    我正在尝试为我们的团队评估 git 要求之一是使用 HTTPS 作为传输方法 我一直在努力遵循git http 后端 http www kernel org pub software scm git docs git http backen
  • 交互式保存文件?

    Using tk choose files or file choose我能够交互式地选择一个文件 是否有一个类似的函数 我可以允许用户交互地决定在哪里保存 write table 的输出 在 Windows 7 上并通过 RGUI 工作
  • 将 MediaElement 绑定到 WPF 中的滑块位置

    尝试将滑块的最大值绑定到媒体元素的持续时间并将滑块的当前值绑定到媒体元素的位置 但由于某些原因它没有 我希望滑块在视频播放时移动拇指
  • ReferenceError:使用 Performance.now() 时未定义性能

    我收到错误ReferenceError performance is not defined当尝试使用时性能 now https developer mozilla org en US docs Web API Performance no
  • Kafka AVRO - 从长时间到日期时间的转换

    当我想要发送包含 long 类型字段的 AVRO 消息时 出现以下错误 Caused by org apache kafka common errors SerializationException Error deserializing
  • 仅特定路由或控制器需要 SSL 客户端证书

    我有一个使用 Kestrel 作为服务器的 ASP NET MVC Core 项目 它既提供用户内容 asp net mvc 又托管与代理 软件 通信的 Web API 控制器 我已启用 HTTPS 和客户端证书支持 问题是我想要调用 We
  • 将 excel 的动态文件路径传递给“OPENROWSET”

    我想将 excel 的动态 URL 传递给 OPENROWSET 注意 我将 Excel 文件的返回结果传递给光标 我想将文件路径传递给 excelpath 我尝试了很多方法 但它给出了语法错误 ALTER procedure dbo im
  • Android.mk - 包含 OpenCV 目录,用于使用 NDK 进行本机 C++ 编译

    我正在使用 NDK 将 C OpenCV 代码导入到 Android 应用程序中 首先 我必须说 我没有学过编程 我只是一个业余开发人员 所以有很多事情我无法管理 特别是编码之外的事情 我使用 QtCreator 来编写 C OpenCV