Hallo,
Ich hab ein gröberes Problem mit JNI, ich rufe von java aus eine Funktion auf, welche den Aufruf (samt Parameter) eigentlich nur weiterleiten soll:
diese methode ruft dann folgende auf:
Es ist also wirklich nur eine Weiterleitungsfunktion, das ganz hat hauptsächlich den Grund dass ich der DLL wo methode Java_sun_font_X11TextRenderer_doDrawGlyphList drinnen ist, keine Abhängigkeiten haben möchte welche AWTXRDrawGlyphList braucht (ist in einer anderen DLL).
Mein Problem ist nun, dass GetPrimitiveArrayCritical in Methode2 einfach abstürzt.
Kopiere ich den Array-Zugriff aber in Methode 1, und füre sie aus, gibts keinen Absturz.
Habt ihr eine idee an was es liegen könnte?
Übergebe ich den JNI-Enviroment-Pointer falsch, oder übergebe ich die Java-Objekt-Handles falsch an die aufgerufene Funktion?
Danke im Vorraus, Clemens
Ich hab ein gröberes Problem mit JNI, ich rufe von java aus eine Funktion auf, welche den Aufruf (samt Parameter) eigentlich nur weiterleiten soll:
Code:
JNIEXPORT void JNICALL Java_sun_font_X11TextRenderer_doDrawGlyphList
(JNIEnv *env, jobject xtr,
jlong dstData, jint totalGlyphs, jboolean usePositions,
jboolean subPixPos, jboolean rgbOrder, jint lcdContrast,
jfloat glyphListOrigX, jfloat glyphListOrigY,
jlongArray images, jfloatArray positions)
{
AWTXRDrawGlyphList(env, xtr, dstData, totalGlyphs, usePositions,
subPixPos, rgbOrder, lcdContrast, glyphListOrigX,
glyphListOrigY, images, positions);
}
diese methode ruft dann folgende auf:
Code:
JNIEXPORT void AWTXRDrawGlyphList
(JNIEnv *env, jobject self,
jlong dstData, jint numGlyphs, jboolean usePositions,
jboolean subPixPos, jboolean rgbOrder, jint lcdContrast,
jfloat glyphListOrigX, jfloat glyphListOrigY,
jlongArray imgArray, jfloatArray posArray)
{
jlong *images;
images = (jlong *) (*env)->GetPrimitiveArrayCritical(env, imgArray, NULL); <<< ABSTURZ
}
Es ist also wirklich nur eine Weiterleitungsfunktion, das ganz hat hauptsächlich den Grund dass ich der DLL wo methode Java_sun_font_X11TextRenderer_doDrawGlyphList drinnen ist, keine Abhängigkeiten haben möchte welche AWTXRDrawGlyphList braucht (ist in einer anderen DLL).
Mein Problem ist nun, dass GetPrimitiveArrayCritical in Methode2 einfach abstürzt.
Kopiere ich den Array-Zugriff aber in Methode 1, und füre sie aus, gibts keinen Absturz.
Habt ihr eine idee an was es liegen könnte?
Übergebe ich den JNI-Enviroment-Pointer falsch, oder übergebe ich die Java-Objekt-Handles falsch an die aufgerufene Funktion?
Danke im Vorraus, Clemens