Hallo,
ich habe eine einfach Java-Funktion zum Testen von JNI geschrieben und den C-Code dazu. Unter Windows funktioniert das ganze ohne Probleme wenn ich es aber unter Linux(x64) versuche zu kompilieren bekomme ich folgenden Fehler:
Aufruf:
Fehler:
C-Datei
aber die sollte ja OK sein da es unter Windows ja funktioniert
Hatte schon einmal jemand einen ähnlichen Fehler oder nen Tipp was ich anders machen muss damit es geht.
Brauch das JNI dringend unter Linux und bin langsam am verzweifeln :cry:
Bin für jeden Tipp dankbar
ich habe eine einfach Java-Funktion zum Testen von JNI geschrieben und den C-Code dazu. Unter Windows funktioniert das ganze ohne Probleme wenn ich es aber unter Linux(x64) versuche zu kompilieren bekomme ich folgenden Fehler:
Aufruf:
Code:
gcc -shared -o libnativelib.so -I/usr/lib64/gcc/x86_64-suse-linux/4.3/include/ strlen.c -static -lc
Code:
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/gcc/x86_64-suse-linux/4.3/crtbeginT.o:
relocation R_X86_64_32 against `__DTOR_END__' can not be used when making a shared object; recompile with -fPIC
/usr/lib64/gcc/x86_64-suse-linux/4.3/crtbeginT.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
C-Datei
Code:
#include <jni.h>
#include "StrLen.h"
#include <stdio.h>
/* Methode welche aus Java aufgerufen wird */
JNIEXPORT jint JNICALL Java_StrLen_strlen(
JNIEnv *env, jclass clazz, jstring s )
{
printf( "Ausgabe aus C!\n");
printf( "%s" , (*env)->GetStringUTFChars(env, s,NULL));
/* Rückgabe Wert an die Java Application*/
return 0;
}
Hatte schon einmal jemand einen ähnlichen Fehler oder nen Tipp was ich anders machen muss damit es geht.
Brauch das JNI dringend unter Linux und bin langsam am verzweifeln :cry:
Bin für jeden Tipp dankbar