c++ - 在 Android NDK 中用 C++ 调用 Java 对象 - 使用什么 IDE?

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

我需要在我的 Android 应用程序中使用 C++ 代码,我正在使用 NDK/JNI 执行此操作。我必须能够在 C++ 中使用 Java 对象。 (注意:我没有在 Java 中使用 C++ 方法。)

我的问题出在 IDE 上。我在 Android 项目中名为“jni”的文件夹中有 C++ 代码。我已经在 Eclipse 中安装了 CDT。 HelloWorld C++ 项目工作正常,确认 CDT 设置正常。

我不知道如何运行我的 C++ 代码?

提前致谢!

最佳答案

你将需要在你的类中使用带有签名的本地方法

native void processData(byte[] data);

然后在您的 JNI 代码中,您将需要一个具有正确名称的 C 函数

extern "C" JNIEXPORT void JNICALL Java_your_package_and_class_processData(JNIEnv* env, jobject clazz, jobject data);

javah工具可以帮助您获得与您的 Java 类匹配的正确名称。现在您处于 native 代码中,并且拥有对类实例和字节数组的引用。您可以使用通过 JNIEnv 实例提供的 JNI 方法访问字节数组中的数据。安卓JNI Tips页面对此有一些帮助,如果您是 JNI 的新手,您也应该阅读本页的其余部分。

我假设您将修改字节数组中的数据,但如果您需要在新的字节数组中返回它,请查看 functions available in JNIEnv .注意:当使用 C++ 时,您不会将 JNIEnv* 作为第一个参数传递,而是将函数调用为 env->...

这不是您的 IDE 的问题,但是如果您的项目未设置为使用 NDK 进行构建,那么您的代码将不会被构建。我相信 Eclipse 有一些工具可以帮助添加 NDK 构建功能。

关于c++ - 在 Android NDK 中用 C++ 调用 Java 对象 - 使用什么 IDE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165558/

相关文章:

Android NDK-JNI-HAL

c# 如何使用新的 Version Helper API

c++ - 将 QProcess 窗口置于最前面(运行 Qt Assistant)

android - 在 HW 模式下创建 OMXCodec 编码器

android - 如何使用 Open GL ES 在 Android 中加载巨大的位图?

java - JNI 如何将值更新为 int 和 double 字段

c++ - QDialog 中所有按钮的 Qt 单槽

c++ - 内置mpi的自定义boost python模块?

c - 如何将多个c文件合并到一个共享库中以用于外部函数接口(interface)

c - "error: ' xxx ' undeclared"_and_ "error: unused variable ' xxx '"同时在同一个文件中