T
tuxedo
Gast
Hallo,
habe mit JNI mal wieder folgendes Problem....
Ich habe eine Java-Methode die per Getter-Methode ein Char-Array zurück liefert.
Dieses muss ich in meiner C-Wrapper-Klasse an einen Treiber weiterleiten.
Ähnliches habe ich bereits mit erfolg mit einem Integer-Array gemacht.
So hats mit dem Integer geklappt:
Da zwischendrin standen noch mehr Zeilen id eich der Übersichthalber weggelassen hab da sie mit demInt-Array nix zu tun hatten.
Ich habe mir also erst die Klasse meines Objektes das die Getter-Methode kennt besorgt.
Mit dieser Klasse habe ich mir dann die Methoden-ID der Getter-Klasse geholt und damit dann schließlich die getter-Methode aufgerufen. Das Ergebnis habe ich in ein "jintArray" gecasted und schließlich auch in einem "jintArray" gespeichert.
Hat prima geklappt.
Gleiches habe ich jetzt analog mit einem Char-Array gemacht:
Wie gesagt. Beim Integer-Array hat das 1a geklappt. Doch beim Char-Array balert mir der Compiler folgendes um die Ohren:
Bemängeln tut er hier die Zeile in der das "jcharArray" gecasted und gespeichert wird.
Warum krieg ich hier "pointer from integer" ?? Und was will er da mit der Größe ?
Gruß
Alex[/code]
habe mit JNI mal wieder folgendes Problem....
Ich habe eine Java-Methode die per Getter-Methode ein Char-Array zurück liefert.
Dieses muss ich in meiner C-Wrapper-Klasse an einen Treiber weiterleiten.
Ähnliches habe ich bereits mit erfolg mit einem Integer-Array gemacht.
So hats mit dem Integer geklappt:
Code:
// get the class of the pdriverConfig-object
jclass XLDriverConfigClass = (*env)->GetObjectClass(env, pDriverConfig);
// get the method IDs
jmethodID getReservedMID = (*env)->GetMethodID(env, XLDriverConfigClass, "getReserved", "()[I");
// call some methods
jintArray jreserved = (jintArray)(*env)->CallIntMethod(env, obj, getReservedMID);
Da zwischendrin standen noch mehr Zeilen id eich der Übersichthalber weggelassen hab da sie mit demInt-Array nix zu tun hatten.
Ich habe mir also erst die Klasse meines Objektes das die Getter-Methode kennt besorgt.
Mit dieser Klasse habe ich mir dann die Methoden-ID der Getter-Klasse geholt und damit dann schließlich die getter-Methode aufgerufen. Das Ergebnis habe ich in ein "jintArray" gecasted und schließlich auch in einem "jintArray" gespeichert.
Hat prima geklappt.
Gleiches habe ich jetzt analog mit einem Char-Array gemacht:
Code:
// get the class of the data object
jclass DataClass = (*env)->GetObjectClass(env, dataObject);
// get the method IDs
jmethodID getRawMID = (*env)->GetMethodID(env, DataClass, "getRaw", "()[C");
// call some methods
jcharArray jrawArray = (jcharArray) (*env)->CallCharMethod (env, obj, getRawMID);
Wie gesagt. Beim Integer-Array hat das 1a geklappt. Doch beim Char-Array balert mir der Compiler folgendes um die Ohren:
warning: cast to pointer from integer of different size
Bemängeln tut er hier die Zeile in der das "jcharArray" gecasted und gespeichert wird.
Warum krieg ich hier "pointer from integer" ?? Und was will er da mit der Größe ?
Gruß
Alex[/code]