簡體   English   中英

通過JNI將字符串數組從.c文件傳遞到java dll

[英]Passing array of strings from .c file to java dll via JNI

我試圖讓 C# 在我的 java 程序中實例化一個 class 。 我有一些更簡單的例子在工作,但我遇到了一個問題,即我的 java class 將字符串數組作為構造函數。

我的問題是如何在 a.c 文件中創建一個字符串數組,然后將其傳遞給 java class?

此刻,我設法通過了一個 jString object。

這是 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;
}

如果您需要更多信息,請告訴我。

親切的問候

  • 首先創建字符串數組。
  • 創建每個元素字符串。
  • 使用數組 object 調用 Java 初始化程序。

示例代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM