将现有的 C++(.h 和 .cpp)文件转换为 Android 的 java [关闭]

2024-03-10

我正在 Eclipse 下为 Android 进行开发。我有一些 C++(.h 和 .cpp)文件希望在我的 Android 应用程序中使用。我读过了使用 Java 本机接口进行 C/C++ 编程 http://home.pacifier.com/~mmead/jni/cs510ajp/index.html现在我知道如何制作 .so 文件并将其导入到 Android 中。但主要问题是:

有没有任何工具可以将 c++(.h 和 .cpp)文件转换为 java 样式文件,我可以编译并创建 .so 库?我听说过 JNI-javah 和 javac,这些工具可以帮助我吗?如果可以的话,如何?


Edited:

javah 是一个有用的工具,可以从给定的类创建 C 风格的头文件。生成的头文件用 C 术语描述了类文件。尽管可以手动创建头文件,但这几乎总是一个坏主意。 javah 确切地知道 Java 类型和对象如何映射到 C 类型。例如,Java 中的 int 映射到 C 中的 long,Java 中的 long 映射到本机代码中的 64 位值 _int64。如何使用这个javah?

有人知道如何在 android 应用程序中使用 .so 库中实现的函数吗?如果有人有代码示例或有用的文章链接,请提供。

提前致谢 !


您不“将 C++ 文件转换为 java 样式”。您需要围绕现有 C++ 代码创建 JNI 包装器。这个JNI包装器实际上是可以被Java调用的C++代码。

我所说的包装器是指您不必修改现有的 C++ 代码库。这个包装,或者更好地说这个binding一般应该很薄。包装器代码仅用于公开现有功能,而不是实现它们。最好将实现保留在(可移植)C++ 代码库中。

如果代码库不是太大,那么我建议您手动编写此包装器,如中所述JavaTM 本机 界面 程序员指南和规范 http://java.sun.com/docs/books/jni/html/jniTOC.html

现在,如果您尝试绑定大型库,则可能会出现问题。所以,关于工具,我没有使用过,但是看看SWIG http://www.swig.org/,以及相关的SWIG Java 文档 http://www.swig.org/Doc2.0/Java.html#Java.

根据主页的描述,这就是你所要求的:

SWIG 通常用于解析 C/C++ 接口并生成“胶水” [Java、Python、PHP、 ...] 调用 C/C++ 代码。

javah 在某些情况下可能很有用,但这不是您所要求的。它从 Java 类中的本机声明中提取 JNI 样板代码。至于javac,它是Java编译器,无关紧要。

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

将现有的 C++(.h 和 .cpp)文件转换为 Android 的 java [关闭] 的相关文章

随机推荐