我需要在我的 Android 应用程序中使用 C++ 代码,我正在使用 NDK/JNI。我必须能够在 C++ 中使用 Java 对象。(注意:我没有在 Java 中使用 C++ 方法。)
我的问题是IDE。我在 Android 项目中名为“jni”的文件夹中有 C++ 代码。我已经在 Eclipse 中安装了 CDT。HelloWorld C++ 项目工作正常,确认 CDT 设置正常。
我不知道如何运行我的 C++ 代码?
提前致谢!
我需要在我的 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 类匹配的正确名称。现在您处于本机代码中,并且您拥有对类实例和字节数组的引用。JNIEnv
您可以使用通过实例提供的 JNI 方法访问字节数组中的数据。Android JNI Tips页面对此有一些帮助,如果您是 JNI 新手,您也应该阅读此页面的其余部分。
我假设您将修改字节数组中的数据,但如果您需要在新的字节数组中返回它,请查看JNIEnv
. 注意:使用 C++ 时,不要将 aJNIEnv*
作为第一个参数传递,而是将函数调用为env->...
这不是您的 IDE 的问题,但是如果您的项目没有设置为使用 NDK 构建,那么您的代码将不会被构建。我相信 eclipse 有一些工具可以帮助添加 NDK 构建功能。
在 Eclipse 中,右键单击您的项目并在 android 属性下单击“添加本机支持”。按照提示为您的项目设置本机支持。