java - 在JNI层填充一个字符串数组

标签 java java-native-interface

我是 Java 编程新手,有一个基本问题。我想将一个字符串数组传递给 JNI 层。 JNI函数里面可以用字符串填充数组吗?所有帖子要么讨论如何从 JNI 层返回字符串数组,要么讨论如何在 JNI 层解析字符串数组。可能吗?

谢谢

最佳答案

是的,这是可能的。有一个 example here那正是你想要的。您需要在 java 中从 JNI 端创建数组和字符串(类似于调用 new String(char[]))。支持 Unicode 和 UTF-8(每个都有一个 JNI 函数集)。

#include <jni.h>
#include "ArrayHandler.h"

JNIEXPORT jobjectArray JNICALL Java_ArrayHandler_returnArray
  (JNIEnv *env, jobject jobj)
{
    jobjectArray ret;
    int i;

    char *message[5]= {"first",
                       "second",
                       "third",
                       "fourth",
                       "fifth"};

    ret= (jobjectArray)env->NewObjectArray(5,
                                           env->FindClass("java/lang/String"),
                                           env->NewStringUTF(""));

    for(i=0;i<5;i++) {
        env->SetObjectArrayElement(
                    ret,i,env->NewStringUTF(message[i]));
    }

    return(ret);
}

关于java - 在JNI层填充一个字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041002/

相关文章:

java - MyBatis Guice 中 MyBatis XML 多环境等价物

java - 查找与 DLL 中的偏移量匹配的 Delphi 源代码行

java - 哪里可以学习JNI函数的用法?

android - 从 Android 中的 C 文件调用 C++ 函数

java - 使用 simpledateformat 解析时间戳

java - Java中如何根据特定条件进行分割?

java - 如果我可以将任何东西放置在我想要的地方,如何创建布局?

java - 可以在 Java 中使用 String 数据类型作为时间戳吗?

java - SunJCE 与 OpenSSL

java - 从 JNI 调用 Java 方法