Hallo!
Ich habe ein Problem mit JNA. Ich möchte eine Funktion aus einer in C implementierten DLL aufrufen. Hier der Code der dll:
Dazu gibts noch die entsprechende Header-Datei:
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:
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?
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; }
Code:
#ifndef TEST_H_ #define TEST_H_ int GetRevision(); #endif /* TEST_H_ */
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()); } }
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?
Comment