java - 将 C++ 项目导出到 Android - JNI/JavaCPP/Visualgdb

标签 java android c++ opencv java-native-interface

我在尝试将我的 opencv 项目导出到 android 时遇到了一个严重问题。 由于我所有的代码都在 visual studio 2013 下的 opencv(C++ 版本)中,所以我开始研究 JNI。我最终意识到当我们导出 C 东西时 JNI 工作得很好,因为名称修改被关闭。这会影响我的 C++ 代码吗?我认为它应该作为 C++ 类函数的名称修改。

然后我发现了JavaCPP。这看起来更有希望,但它的指针逻辑的额外开销似乎让我头疼,而且创建 .so 文件的额外构建步骤似乎很奇怪。

最后,阅读 Visualgdb。虽然好像在试用,但是以我对 Visual Studio 的喜好,看起来还算合理。

有人可以指导我必须遵循哪种方式来翻译/绑定(bind)我在 android 中的代码,以便我可以导出我的 C++ 类吗?普通 JNI 是否对 C++ 代码有真正的问题而对 C 没有问题?还是选择 JavaCPP 或 visualgdb?

您的宝贵意见将不胜感激。

谢谢

最佳答案

据我所知,您可以在您的 C++ 代码上使用 JNI,我正在使用它。但是,如果您想用 c++ 编写所有代码并希望 java 在 java 端使用该确切的 c++ 代码,则您应该只使用 JNI。为此,您应该导出公共(public) API 中的所有函数。而且我必须说,通过 MatRect 等自定义对象并不是一个很容易的问题,而且调试也不是很直接。我建议你使用 OpenCV Java并将您的代码移植到 Java。

祝你好运!

关于java - 将 C++ 项目导出到 Android - JNI/JavaCPP/Visualgdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22846748/

相关文章:

c++ - 如何在 Linux 上用 C++ 播放 .wav 文件?

java - 将此指针传递给构造函数的编译器错误?

java - 为什么 QueryParam 返回 null

android - Google map 获取缩放级别的可见区域半径

android - RecyclerView 分离 View 仍然可见

android - OpenGL ES 2.0 漫射照明 : model shows up black

c++ - 使用变量来确定结构成员

java - ThreadLocals 在异步支持的过滤器中启动是线程安全的吗

java - Struts 2 中的注释支持

c++ - Youtube 与 WINAPI GetForegroundWindow() 的交互?