返回一个字符串数组在JNI方法 [英] Return a String array on a JNI method

查看:1398
本文介绍了返回一个字符串数组在JNI方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要得到字符串(字符*)从C ++的名单,并将其返回到Java。

I need to get a List of Strings (char*) from C++ and return it to Java.

我怎么能这样做?

我想其中一个解决方案是返回一个大的字符串pre-定义如下:[ITEM1] [项目2],并就Java的分裂,但它并不像正确的方法

I think one solution is return a big string pre-defined like: "[item1][item2]" and make a split on Java, but it doesn't look like the right approach.

推荐答案

NewObjectArray 进入JNI文档。

基本上你可以从JNI返回函数的字符串(Java)的数组中,然后将其转换在列表或任何类型的集合类型。

Basically you can return from the JNI function an Array Of String (Java) an then transform it in a List or a whatever kind of Collection type.

Peudo code:

Peudo code:

Java的:

....
public List<String> getFooAsList(){
  return new ArrayList(this.getData());
}  
private native String[] getData();

JNI

#include <jni.h>


  JNIEXPORT jobjectArray JNICALL 
               como_foo_bar_getData
  (JNIEnv *env, jobject jobj){

    jobjectArray ret;
    int i;

    char *data[5]= {"A", "B", "C", "D", "E"};

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

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

    return(ret);
 }

未测试!

让我知道,如果它适用于U

Let me know if it works for u

问候

这篇关于返回一个字符串数组在JNI方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆