use*_*195 1 c c# java java-native-interface interop
我试图让C#在我的java程序中实现一个类.我有一些更简单的例子,但是我遇到了我的java类将字符串数组作为构造函数的问题.
我的问题是如何在.c文件中创建一个字符串数组,然后可以将其传递给java类?
在那一刻,我设法传递了一个jString对象.
这是我的.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;
}
Run Code Online (Sandbox Code Playgroud)
如果您需要更多信息,请告诉我.
亲切的问候
灰
小智 5
示例代码:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2116 次 |
| 最近记录: |