c++ - JNI: 如何将一组数据从 C++ 转换为 Java

  显示原文与译文双语对照的内容

我正在尝试使用JNI从 C++ 向java发送一些数据。

在 C++ 中,我有:

Array[0]:
string name ="myName"
int iterations = 16
float value = 15
... etc

所以我想使用JNI返回Java上的所有数据,我正在尝试,但是不工作

JNIEXPORT jobjectArray JNICALL Java_com_testing_data_MainActivity_getDATA(JNIEnv *env, jobject obj)
{
//1º Create a temp object
jobject dataClass
 {
 jstring name;
 jint iterations;
 jfloat value;
 };

jobject tempObject = env->NewObject();



//Get data in c++ format int temp object type


std::vector<dataClass> data = getDataClass();//First error, must be a c++ class, how could i get it?



//How much memory i need?


int dataSize = data.size();



//Reserve memory in java format


jint tempValues[dataSize];


jobjectArray tempArray = env->NewObjectArray(dataSize,dataClass,0);//2º Error, it doesn 't create the class



//Temporal store data in jarray


for (int i = 0; i <dataSize ; i++)


{


 tempArray[i].name = data[i].name;


 tempArray[i].iterations = data[i].iterations;


 tempArray[i].value = data[i].value;


}



return tempArray;//return temp array



}

返回包含数据的结构/对象的步骤? 如何修复错误?

时间: 原作者:

将所有内容转换为JNI类型不是一个好主意。 一般来说,最好创建一个对等对象,换句话说,指向本机资源的句柄指针,比如在 Windows GUI编程中。

...