Ciao Non ho trovato la soluzione su come creare una dll a 64 bit. E usa i suoi metodi C++ nativi. Io uso il codice Java metodynatywne.java:Come generare DLL a 64 bit quale compilatore gcc o altro. Impossibile caricare .dll IA a 32 bit su una piattaforma AMD a 64 bit
class metodynatywne {
static {
System.loadLibrary("metodynatywne");
}
native public void sayHello();
public static void main (String argv[])
{
new metodynatywne().sayHello();
} }
metodynatywne.h poi generato utilizzando javah metodynatywne -jni
ho scritto il codice metodynatywne.cpp:
#include <jni.h>
#include <iostream>
#include "metodynatywne.h"
using namespace std;
JNIEXPORT void JNICALL
Java_metodynatywne_sayHello(JNIEnv * env, jobject self)
{
cout << "Hello World!" << endl;
}
ho ussed gcc per creare il mio dll con i comandi:
c:\>c++ -I c:\java7\include -I c:\java7\include\win32 -c metodynatywne.cpp
e
c:\>c++ -shared metodynatywne.o -o metodynatywne.dll
e quello che quello che sto ricevendo è messaggio di errore:
c:\>java metodynatywne
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Programowanie\UJ\Semestr2\ZPG\PerfCount\cwiczenie\metodynatywne.dll: Can't lo
ad IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
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 metodynatywne.<clinit>(metodynatywne.java:4)
ho usato Java 1.4 a 32 bit javac compilatore e Java7 x64 compilatore entrambi metods mi ha dato lo stesso errore. Come posso affrontarlo? Usa un altro compilatore C++ se sì, come forzare questo compilatore a creare utilizzabile dal mio file java dll. Lavoro su Windows 7 a 64 bit.
Come posso ricavare dal file cpp una dll a 64 bit (con gcc)? O altro compilatore di riga di comando?
Grazie mille per eventuali commenti e aiuto forniti.
Ho lo stesso problema, hai trovato una soluzione? –