[英]Passing array of strings from .c file to java dll via JNI
I trying to get C# to instanciate a class in my java program.我试图让 C# 在我的 java 程序中实例化一个 class 。 I have had a number of simpler examples working but I've hit the problem that my java class takes a string array as the constructor.
我有一些更简单的例子在工作,但我遇到了一个问题,即我的 java class 将字符串数组作为构造函数。
My question is how in a.c file do you create an string array that can then be passed through to the java class?我的问题是如何在 a.c 文件中创建一个字符串数组,然后将其传递给 java class?
At the minute I've managed to pass across a single jString object.此刻,我设法通过了一个 jString object。
Heres the method in my.c file.这是 my.c 文件中的方法。
jobject newClassInstance()
{
jmethodID MID_init;
jobject obj;
jstring name;
jobjectArray ret;
MID_init = (*env)->GetMethodID (env, jClass, "<init>", "([Ljava/lang/String;)V");
if (!MID_init) {
printf("Error: dllClass.<init>() not found\n");
return NULL;
}
name = (*env)->NewStringUTF(env,"Moo");
obj = (*env)->NewObject(env, jClass, MID_init, name);
if (!obj) {
printf("Error: failed to allocate an object\n");
return NULL;
}
return obj;
}
Please let me know if you need anymore information.如果您需要更多信息,请告诉我。
Kind Regards亲切的问候
Ash灰
Sample Code:示例代码:
jobjectArray stringArray;
jString tmp;
char *stringA = "Test1";
char *stringB = "Test2";
jclass clsString;
jint size = 2;
clsString = (*env)->FindClass(env, "java/lang/String");
stringArray = (*env)->NewObjectArray(env, size, clsString, 0);
tmp = (*env)->NewStringUTF(env, stringB);
(*env)->SetObjectArrayElement(env, stringArray, 0, tmp);
tmp = (*env)->NewStringUTF(env, stringA);
(*env)->SetObjectArrayElement(env, stringArray, 1, tmp);
obj = (*env)->NewObject(env, jClass, MID_init, stringArray);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.