![]() |
|
|
|||||||
| Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Neuer Benutzer
Bit
Registriert seit: 31.10.2009
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
hallo,ich hab folgendes problem.
ich hab über einen gcc compiler eine dll erstellt und will diese über jni mit java zum laufen bringen. also ich gib ein "java helloworld" und es entsteht folgende fehlermeldung.... Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Olidata\Desktop\Dictateam\dll_test\classone\hello.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(ClassLoader.java:1778) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1028) at helloworld.<clinit>(helloworld.java:8) Could not find the main class: helloworld. Program will exit. Kurz gesagt, bei einer win32-architektur (habe ich auch schon ausprobiert) funktioniert dieses kleine java-programm mit dieser dll tadellos, nur nicht auf einem win64-betriebssystem wie mein vista. Hab auch seit gestern nach diesem problem gegoogelt, konnte aber für dieses spezielle problem keine passenden hilfestellungen finden. kann mir jemand hierbei weiterhelfen? |
|
|
|
| #2 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.104
Abgegebene Danke: 0
Erhielt 260 Danke für 252 Beiträge
|
Hast du dem gcc irgendwie gesagt, dass die DLL für ein 64bit-System gedacht ist? (Müßte jetzt auch erst nachsehen, welche Flags man da setzen muss, aber automatisch macht er das vmtl. nicht...)
|
|
|
|
| #3 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 31.10.2009
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
ich hab für die ddl folgendes eingegeben:
gcc -mno-cygwin -I"C:\Programme\Java\jdk1.6.0_16\include" I"C:\Programme\Java\jdk1.6.0_16\include\win32" -shared -Wl,--add-stdcall-alias -o hello.dll hello.c das problem ist auch, das das jdk im include-ordner eine dll-compilierung nur für win 32 anbietet. |
|
|
|
| #4 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.104
Abgegebene Danke: 0
Erhielt 260 Danke für 252 Beiträge
|
Das \include\win32 ist AFAIK auch auf 64bittern OK, aber du wirst dem GCC wohl zumindest noch ein Flag wie -m64 mitgeben müssen - ob das schon reicht, weiß ich aber leider nicht auswendig...
|
|
|
|
| #6 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 31.10.2009
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
ich hab jetzt mit dem gcc-befehl auch das -m64 flag eingegeben und es erscheint folgende fehlermeldung...
hello.c:1: sorry, unimplemented: 64-bit mode not compiled in hab nach dieser fehlermeldung weiter gegoogelt und herausbekommen das ich hierfür einen Cross-compiler für m64-flag benötige. weiß jetzt auch nicht was ich darunter verstehen soll
|
|
|
|
| #7 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 17.08.2007
Beiträge: 3.954
Abgegebene Danke: 2
Erhielt 153 Danke für 149 Beiträge
|
Ein Cross-Compiler ist generell ein Compiler, der für eine andere Architektur (in diesem Fall x64) kompiliert als die aktuell laufende.
Mit einem Cross-Compiler kann man z.B. auch Linux-Programme unter Windows kompilieren, allerdings sind diese dann trotzdem nur unter Linux lauffähig, daher das Cross. |
|
|
|
| #10 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.104
Abgegebene Danke: 0
Erhielt 260 Danke für 252 Beiträge
|
Hm... mit cygwin/mingw hatte ich lange nichts zu tun, deswegen gehen mir jetzt auch die Ideen aus - braucht man da vielleicht einen speziellen MinGW? (Ein kurze Websuche hatte auf MinGW-w64 - for 32 and 64 bit Windows | Get MinGW-w64 - for 32 and 64 bit Windows at SourceForge.net geführt, aber hab's noch nicht näher angesehen - ist nur eine Frage....)
|
|
|
|
| #11 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 31.10.2009
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
genau so weit bin ich auch gestern gekommen. habs mir auch schon runtergeladen. allerdings weiß ich nicht wo ich diesen mingw64-ordner im mingw-verzeichnis installieren soll. hab auch dazu noch keine erklärende dokumentation gefunden, wo ich mingw64 hinkopieren soll.
|
|
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Apache FOP 0.20-5 mit JNI von C++ Code aufrufen | Chris81T | Allgemeine Java-Themen | 8 | 05.09.2008 16:38 |
| JNI: env an Thread übergeben | mischer | Allgemeine Java-Themen | 1 | 01.06.2006 14:16 |
| JNI will nicht gehen unter mehren Packeten | tuxilein | Allgemeine Java-Themen | 2 | 19.10.2005 08:24 |
| JNI - Java-Code mit DELPHI verbinden | Reeny | Allgemeine Java-Themen | 2 | 07.10.2005 14:28 |
| Win32-Dll-Funktionen nutzen mit JNI, wie? | scrontch | Allgemeine Java-Themen | 0 | 10.10.2003 17:48 |