我需要在我的 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/