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
 
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ß
 
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
 

Neue Beiträge

Zurück