# Eine DLL Datei in java.library.path einbinden



## Steven19 (3. November 2010)

Guten Morgen

Ich habe ein kleines Problem. Ich möchte eine DLL Datei von meiner Schrittmotorenkarte in mein Java programm einbinden. 
Das habe ich mit dem Befehl: System.loadLibrary("emis_pbl.dll"); gemacht.

Jetzt muss ich sie noch in meine Library einfügen aber das ist nicht so einfach weil es keine JRE Datei ist.
Ich habe schon was gelesen das man was mit JNI machen muss aber das hat mir auch nicht viel weiter geholfen. 

Den Link von der JNI Seite habe ich schon aber ich werd daraus einfach nicht schlau.

Ich habe die DLL Datei mal in den Anhang gemacht.



Gruß Steffen


----------



## genodeftest (3. November 2010)

Hi Steffen
schau dir am besten mal JNA(https://jna.dev.java.net/) an. Diese API bietet einen sehr einfachen Zugriff auf native Bibliotheken wie DLLs unter Windows. Was du aber trotzdem brauchst, sind die Header-Dateien dieser Bibliothek, denn sie legen die Namen fest, mit denen auch JNA auf die Befehle der DLL zugreift.


----------



## Steven19 (4. November 2010)

Morgen genodeftest,

Danke für deine schnelle Antwort. Aber im großen und ganzen bringt das mich nicht wirklich weiter.
Hat den keiner eine Anleitung wie man eine DLL in Java einbinden kann****

Gruß Steffen


----------



## genodeftest (4. November 2010)

Was meinst du mit "einbinden"?
Wenn du Zugriff auf native Bibliotheken wie DLLs suchst, musst du dir JNI sehr genau ansehen, siehe z.B. http://openbook.galileocomputing.de/javainsel8/javainsel_27_001.htm. Einfacher geht es wie gesagt mit JNA. Aber beides erfordert etwas Arbeitsaufwand .

Wichtig ist zuerst:
Wo ist der Header der DLL? ohne ihn kann man nicht auf die Bibliothek zugreifen!


----------



## Steven19 (4. November 2010)

Ja ich muss die DLL irgendwie in die Library einbinden.

Meine Code sieht so aus:

public static native boolean Ini_WinIo_QueryPerformance();
	static
	{
		System.loadLibrary("emis_pbl.dll");
	}
	public static native boolean Shutdown_WinIo();
	public static native boolean Ini_ParalleleSchnittstelle(short Nr);
	public static native boolean Ini_Schrittmodus_StromabsenkungAuf(short Schrittmodus, short Stromabsenkung);
	public static native boolean Vecout(int xStep, int yStep, int zStep, int Startfreq, int Arbeitsfreq, int Rampenlaenge);
	public static native boolean Referenzfahrt(int i, int ROffset, int refSpeedStart2, int refSpeedWork2, int refRamp2);
	public static native boolean Stromabsenkung();
	public static native boolean SetzeAusgang(short modus);
	public static native boolean SetzeE1Verknuepfung(boolean bAktion);
	public static native boolean SetData(short pin, short modus);
	public static native boolean GetData(short pin);
	public static boolean erg;

Wenn ich das Programm so laufen lass dann kommt eben der Fehler das die emis_pbl.dll in der java.path.library fehlt. 
Jetzt möchte ich die DLL die oben im Anhang ist irgendwie einbinden.

Was meinst du mit Header der DLL? Versteh ich nicht.


Gruß Steffen


----------



## zeja (4. November 2010)

Beim starten deines Programm mußt du den library.path mitgeben:
java -Djava.library.path=c:\programme\emis_pbl.dll MeinProgramm

Und bei dem loadLibrary-Aufruf mußt du das .dll weglassen.


----------

