Hallo!
Ich habe ein Problem mit JNA. Ich möchte eine Funktion aus einer in C implementierten DLL aufrufen. Hier der Code der dll:
Code:
#include <stdio.h>
#include "test.h"
int GetRevision() {
return 6543;
}
Dazu gibts noch die entsprechende Header-Datei:
Code:
#ifndef TEST_H_
#define TEST_H_
int GetRevision();
#endif /* TEST_H_ */
Das ganze wird dann zu "test.dll" kompiliert. Nun möchte ich aus Java heraus die Funktion GetRevision per JNA Aufrufen. Das versuche ich folgendermaßen:
Code:
package foo;
import com.sun.jna.Library;
import com.sun.jna.Native;
public class HelloWorld {
public interface NativeLibrary extends Library {
int GetRevision();
}
public static void main(String[] args) {
System.out.println(System.getProperty("jna.library.path"));
NativeLibrary instance = (NativeLibrary) Native.loadLibrary("test", NativeLibrary.class);
System.out.println(instance.GetRevision());
}
}
Die benötigte JNA.jar ist natürlich im classpath. Beim starten setze ich per "-Djna.library.path=..." das entsprechende Verzeichnis, in dem test.dll liegt.
Beim Starten des Java-Programms wird der jna.library.path korrekt ausgegeben. Und dann bleibt das Programm hängen. Nach mehreren Versuchen meldet Eclipse, dass der PermGen Space voll ist und beendet sich.
Wo ist der Fehler?