dynamische ladbare Bibliothek (.ll) kann nicht geladen werden

neugierig_10100101

Grünschnabel
hallo allerseits,
Ich wollte nach dem richtigen Befehl fragen, um eine Library über cmd-Eingabeaufforderung zu erstellen. Folgenden geht leider nicht:
>gcc -I "C:\Program Files\Java\jdk1.8.0_111\include" -I "C:\Program Files\Java\jdk1.8.0_111\include\win32" -c MyClass.c
dann: es wird die Objekt-Datei MyClass.o generiert
>gcc -shared -o MyLibrary.dll MyClass MyClass.o
dann: es wir die Library Myclass-Library.dll generiert
>java Myclass
dann: Programm startet nicht, Fehlermeldung:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Lebaal\Deskt
op\nativ_jniAPI\Factorial-Library.dll: Can't load IA 32-bit .dll on a AMD 64-bit
platform

at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at Factorial.<clinit>(Factorial.java:12)
P.S.: Die JVM die ich installiert habe, ist auch für 64bit BS
 

neugierig_10100101

Grünschnabel
Hallo, danke Leute erstmal für eure Antworte. ich habe eine native Funktion benutzt in Java-Code, die Funktion ist definiert in c-Code. und um die Funktion in Java aufrufen zu können muss ich ja ein gemeinsames library erzeugen, in dem ich sowohl Java Code als auch c Code kompiliere um dann durch den Befehl, den ich erwähnt habe, die library zu erzeugen. aber ich bekomme jene Fehlermeldung
Gruß
 

zerix

Hausmeister
Moderator
Hallo,

wie vfl_freak schon sagte, das Problem ist, dass du eine 32Bit-Library mit einer 64Bit-VM nutzen möchtest. Du brauchst solltest je eine Library erstellen, eine für 32Bit und eine für 64Bit und dann während der Laufzeit die dementsprechende Lib auswählen.


Viele Grüße
Sascha