Witam Nie znalazłem rozwiązania, jak utworzyć 64-bitową bibliotekę dll. I używaj jego natywnych metod C++. Używam kod Java metodynatywne.java:Jak wygenerować 64-bitowy plik .dll, który kompilator GCC lub inny. Nie można załadować IA 32-bitowego pliku .dll na 64-bitowej platformie AMD.
class metodynatywne {
static {
System.loadLibrary("metodynatywne");
}
native public void sayHello();
public static void main (String argv[])
{
new metodynatywne().sayHello();
} }
następnie generowane metodynatywne.h użyciu javah -jni metodynatywne
pisałem kod 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;
}
I ussed gcc utworzyć mój dll z opcjami:
c:\>c++ -I c:\java7\include -I c:\java7\include\win32 -c metodynatywne.cpp
i
c:\>c++ -shared metodynatywne.o -o metodynatywne.dll
i co co mi chodzi jest komunikat o błędzie:
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)
użyłem Java 1.4 32-bitowy kompilator javac i java7 x64 kompilator oba metods dał mi ten sam błąd. Jak sobie z tym poradzić? Użyj innego kompilatora C++, jeśli tak, wymuszenie tego kompilatora, aby utworzyć użyteczne przez mój plik dll Java. Pracuję na Windows 7 64 bit.
Jak mogę zrobić z pliku cpp 64-bitowe dll (z gcc)? Lub inny kompilator linii poleceń?
Bardzo dziękuję za wszelkie uwagi i pomoc.
Mam ten sam problem, czy znalazłeś rozwiązanie? –