从 Android 中的本机 c++ 文件调用本机 opencv
Posted
技术标签:
【中文标题】从 Android 中的本机 c++ 文件调用本机 opencv【英文标题】:Calling native opencv, from native c++ files in Android 【发布时间】:2017-03-27 21:30:29 【问题描述】:在这里真的很挣扎。基本上,我有一大堆来自 ios 项目的 c++ 文件,它们使用 opencv 并且工作正常。
现在,我正在尝试移植到 android。所以我需要做的是,将我拥有的现有 c++ 文件作为共享库拉入 Android 项目,并且仍然能够调用本机 opencv c++ 方法。这可能吗?
我知道 java 实现只是 c++ 代码的一堆包装器,但我似乎找不到从项目中的其他 c++ 文件调用本机 c++ 代码的方法。任何帮助表示赞赏。谢谢
史蒂夫
【问题讨论】:
【参考方案1】:您是否尝试过使用Android NDK (Native Development Kit)?它允许您在 Android 中使用 c/c++ 代码。但是您不能简单地将库导入您的应用程序,您需要使用 NDK(.SO 文件)构建它,它会生成充当代码链接器的脚本。
【讨论】:
【参考方案2】:如果我对您的理解正确,您需要在本机层(而不是通过 Java API)与 opencv 交互。您应该能够为您的目标平台获取 .so 库以及必要的标头,并使用 NDK 对其进行构建。
如果您的应用程序项目没有 JNI 部分,只需将相应的 OpenCV 原生库从 /sdk/native/libs/ 复制到您的项目目录到文件夹 libs/。
source
有很多方法可以设置 NDK 构建。较新版本的 CMake (>=3.7.2) 使得交叉编译相对容易。见this page
【讨论】:
以上是关于从 Android 中的本机 c++ 文件调用本机 opencv的主要内容,如果未能解决你的问题,请参考以下文章
带有静态库的 Android Studio 中的本机 C++ 代码
我想从本机活动传递数据以使用 android 中的桥接来反应本机 js 文件
如何附加调试器以从托管(C#)包装器进入本机(C++)代码?