.dll einbinden

MichaelKl

Mitglied
Wie kann ich eine VB/C# .dll in ein Java-Projekt einbinden?

die .dll stellt bspw. eine Methode zur verfügung

checkUser(Name as String)

welche ich in meinem Java Projekt aufrufen möchte.

Der gewohnte Weg zum Einbinden von .jar Libraries war erfolglos! Gibt es überhaupt einsteigerfreundliche Möglichkeiten?
 

MQue

Top Contributor
Ja gibt es, du musst als erstes in einer Klasse die Methoden definieren, die du in der dll Aufrufen willst, dann gibt es ein mitgeliefertes Tool, welches die Klasse parst und dann eine Header.h erzeugt, Die kannst du dann einbinden:

siehe: http://www.computer-labs.de/artikel/programmierung/Java_JNI.pdf

Du musst allerdings aufpassen, wenn du die dll in C#, VB oder sonst was programmierts musst du trotzdem eine C Schnittstelle bereitstellen um mit Java auf die Methoden zuzugreifen:
du musst als die Funktionen im C# Code so in der Art deklarieren:

extern "C" function...
 
Zuletzt bearbeitet:

MQue

Top Contributor
Ein Wrapper ist genau das was ich dir geschrieben habe, in eine Java Klasse Methoden deklarieren (mir native), dann das im SDK mitgelieferte Tool (javah) drüberlaufen lassen, dann hast du eine *.h und die bindest du dann in dein C# ein so wie ichs dir geschrieben habe mit extern "C" ... und fertig
 
Zuletzt bearbeitet:

MQue

Top Contributor
Ganz versteh ich dich da nicht, wenn du mit RMI anfängst hast du wesentlich mehr aufwand als wenn du das einfach mit JNI machst, es kommt natürlich darauf an, was du willst aber ich befürchte du fängst an, mit Kanonen auf Spatzen zu schießen.
 

MichaelKl

Mitglied
Mit Kanonen auf Spatzen schießen wäre unfug, ich such schließlich eine einfache Lösung da ich Java Anfänger bin.

die Headergenerierung

javah -o cpp_interface.h JniTest

hat leider nicht geklappt... vll ist das ganze noch zu viel für den Anfang...
 

Gorac

Mitglied
wie bindet man denn die header datei in das c# programm ein? ich hab da nichts zu gefunden. alles was ich zu "extern"-Aufrufen finde, dient zum einbinden von dlls aber nicht von headern...
 

MQue

Top Contributor
Code:
#pragma once extern "C" int __declspec(dllexport) TestFooInt(int num); extern "C" int __declspec(dllexport) TestFoo(WCHAR* lpDest, size_t maxDestLength, const WCHAR* lpSrc);
 
Zuletzt bearbeitet:

Gorac

Mitglied
ja das is die deklaration in der header datei... aber wie sieht der import in c# aus?
sowas wie

Code:
#include "header.h"

gibt es bei c# ja nicht (oder irre ich mich da).
 
Zuletzt bearbeitet:

MQue

Top Contributor
Ich stells nochmal rein, muss es dann aber wieder rausgeben:
Link wieder rausgegeben, da kritisch (für mich) :)
 
Zuletzt bearbeitet:

Gorac

Mitglied
in deinem dokument gehts leider um c++ und nicht c# dlls.

ich denke es ist nicht ohne weiteres möglich direkt von java -> c# sondern (wie in meinem verlinkten thread erwähnt) java -> c++ -> c#
 

MQue

Top Contributor
Nö, das würd ich auch nicht sagen, du kannst in C# "assemblys" programmieren und von Java auf die assemblys zugreifen die wiederum auf die dll zugreift. das ist weit weniger aufwand als C++ auch noch mit einzubeziehen.

assemblys sind nichts anderes als die Antwort von Microsoft auf Modulprogramming.
 

Schmid.m

Mitglied
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.

Kennt jemand noch eine möglichkeit das zu realisieren?
 

Marco13

Top Contributor
System.loadLibrary("emis_pbl.dll");
wird nicht funktionieren, wenn dann
System.loadLibrary("emis_pbl");
und auch NUR dann, wenn das wirklich eine JNI-DLL ist. Mit "keine JRE-Datei" meinst du wohl "keine JAR"?

Aufgrund der Art der... Fragestellung nur der Tipp, dass du mit JNA leichter zum Ziel kommen könntest (wobei das so im Voraus schwer zu sagen ist...)
 

Schmid.m

Mitglied
Okay
aber wie oder woran erkenne ich ob es sich um eine JNI- dll handelt oder nicht.
Es ist so ich habe ein Virtual- Basic Programm das meine Schrittmotorenkarte ansteuert und das funktioniert. Dieses Programm möchte ich bzw. muss ich auf Java umschreiben. Das Programm konnte ich bis jetzt fast komplett umschreiben nur das mit der dll funktioniert nicht.
Weiß jemand wo ich vielleicht eine Anleitung her bekomm um dieses Problem zu beheben?
 

Marco13

Top Contributor
Man "erkennt" das von außen nur schwer, es geht darum, dass die Funktionen der DLL in einer speziellen Form angegeben sind - genaugenommen müssen sie die Implementierung von Methoden sein, die als
Code:
public [b]native[/b] void thisIsDoneByTheDLL();
auf Java-Seite vorhanden sind.

Nochmal: Am ehesten (ohne sich mit JNI zu beschäftigen und einen eigenen Wrapper zu schreiben) wird das vermutlich mit JNA gehen...
 
T

Tomate_Salat

Gast
zum Thema JNA: Ich hatte mir das mal angeschaut, aber ich bekomme es nicht hin, dass er (eigene) DLL's erkennt. Den Code habe ich glaube dummerweise im Frust wieder komplett gelöscht^^. Gibt es da ein gutes Tutorial? Habe bisher noch keines gefunden...
 

Schmid.m

Mitglied
Hab mal nach dem JNA gegoogelt aber bis jetzt noch nichts gefunden das mir hilft.
Hab hier mal einen Auszug aus meinem Programm. Ist da schon etwas schief gelaufen?


Java:
public final class driver
{
	public static native boolean Ini_WinIo_QueryPerformance();
	static
	{
		System.loadLibrary("emis_pbl");
	}
	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 nicht.
Wo muss ich jetzt meine dll hinterlegen das mein Programm mit dieser dll arbeiten kann kann?
 

Marco13

Top Contributor
Jetzt wird's peinlich: Ich selbst habe noch nicht mit JNA gearbeitet :oops: Aber es ist eben genau dafür da, keine eigenen JNI-Wrapper schreiben zu müssen. Hast du mal die Beispiele auf der Seite ausprobiert, ob sie (bei dir) grundsätzlich funktionieren? Statt System.loadLibrary sollte man da sowas wie Native.register verwenden...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
B VISA.jar in Projekt einbinden (Library) Java Basics - Anfänger-Themen 5
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
Pinhg Sound in Greenfoot Code einbinden Java Basics - Anfänger-Themen 2
M OKHttpClient einbinden Java Basics - Anfänger-Themen 3
C externe jar einbinden in Eclipse-Projekt Java Basics - Anfänger-Themen 2
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
SpigBin Sound einbinden bei Funktionsaufruf Java Basics - Anfänger-Themen 4
M JAVA Programm in Website einbinden Java Basics - Anfänger-Themen 19
C External Jar einbinden bei Maven Java Basics - Anfänger-Themen 9
B tar.gz in Eclipse als Bibliothek einbinden Java Basics - Anfänger-Themen 3
C Einbinden von Komponenten mit Maven Java Basics - Anfänger-Themen 3
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
J Module richtig einbinden Java Basics - Anfänger-Themen 2
G eigene Bibliothek einbinden Java Basics - Anfänger-Themen 1
G Einbinden von Bildern in ausführbare Jar-Datei Java Basics - Anfänger-Themen 25
Trèfle EXCEL-File Laufwerkunabhängig einbinden. Java Basics - Anfänger-Themen 1
G persistence.xml in ausführbare jar einbinden Java Basics - Anfänger-Themen 11
D Java Programm mit JavaScript einbinden Java Basics - Anfänger-Themen 8
J ShortCut erstellen aber wie die dll einbinden Java Basics - Anfänger-Themen 3
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
R Grafik in CSV einbinden Java Basics - Anfänger-Themen 2
CptK Erste Schritte Sound-Datei einbinden Java Basics - Anfänger-Themen 2
E HTML in Java einbinden oder JavaScript? Java Basics - Anfänger-Themen 5
U Mehrfach verwendete Sub-Klassen richtig einbinden Java Basics - Anfänger-Themen 4
J If Anweisung in Schleife einbinden Java Basics - Anfänger-Themen 7
F PDF Datei in Java einbinden Java Basics - Anfänger-Themen 22
Hijo2006 Neue externe Klasse einbinden Java Basics - Anfänger-Themen 13
F Klassen Fremde Klasse in GUI einbinden ? Java Basics - Anfänger-Themen 3
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
S Klassen Externe Klasse in ein Projekt mit einbinden Java Basics - Anfänger-Themen 7
A JavaScript Object Notation einbinden mittels Maven Java Basics - Anfänger-Themen 7
S Classpath: Alle .jars innerhalb eines Ordners einbinden Java Basics - Anfänger-Themen 4
1 Im Java Projekt eine txt datei einbinden? Java Basics - Anfänger-Themen 8
S Konsole Lanterna in NetBeans einbinden Java Basics - Anfänger-Themen 5
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
G Applet in ein JSP einbinden Java Basics - Anfänger-Themen 1
Sogomn Einbinden eines Applets Java Basics - Anfänger-Themen 5
M Externe .jar in Sublime einbinden Java Basics - Anfänger-Themen 5
O Eclipse Bibliothek standardmäßig einbinden Java Basics - Anfänger-Themen 5
K JAR Dateien einbinden - funkt nicht wie es sollte... Java Basics - Anfänger-Themen 22
J Klasse einbinden Java Basics - Anfänger-Themen 2
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
S Variablen Rechenzeichen als Variablen in Rechnung einbinden Java Basics - Anfänger-Themen 4
I iCal und auf Homepage einbinden - Prinzip Java Basics - Anfänger-Themen 2
F JAR als bibliothek einbinden Java Basics - Anfänger-Themen 1
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
B jar richtig in libraryslibraries einbinden Java Basics - Anfänger-Themen 4
F Classpath Dateien einbinden und Classpath durchsuchen Java Basics - Anfänger-Themen 2
S Einbinden einer Klasse in die Gui Java Basics - Anfänger-Themen 4
I jar-Datei in HTML einbinden Java Basics - Anfänger-Themen 6
M Einbinden eines youtube-videos in Eclipse Java Basics - Anfänger-Themen 10
U ShareButton für LinkedIn einbinden Java Basics - Anfänger-Themen 2
M Bild einbinden Java Basics - Anfänger-Themen 7
T Java Main aus Subversion aufrufen / Hook einbinden Java Basics - Anfänger-Themen 2
A Applet mit Object-Tags einbinden. Java Basics - Anfänger-Themen 3
G Erste Schritte Native DLL (NativeBass.dll) einbinden (eclipse) Java Basics - Anfänger-Themen 2
B ICO Library über Eclipse einbinden Java Basics - Anfänger-Themen 2
M externe JARs in die eigene JAR einbinden Java Basics - Anfänger-Themen 9
B OOP If und else in Main class einbinden Java Basics - Anfänger-Themen 9
A Webseite in Programm einbinden Java Basics - Anfänger-Themen 5
K Wie jdom einbinden Java Basics - Anfänger-Themen 7
T Classpath Klassen einbinden netbeans Java Basics - Anfänger-Themen 5
D Schleifen einbinden Java Basics - Anfänger-Themen 4
E Bild OS-unabhängig einbinden mit URL Java Basics - Anfänger-Themen 4
A BufferedImage in Android einbinden - Bild spiegeln -wie? Java Basics - Anfänger-Themen 4
C Java in HTML einbinden Java Basics - Anfänger-Themen 2
R Klasse einbinden Java Basics - Anfänger-Themen 8
A JApplet: einbinden von weiteren Jars macht Probleme Java Basics - Anfänger-Themen 2
E apache-commons-net einbinden. Java Basics - Anfänger-Themen 18
S Bibliothek in Eclipse einbinden Java Basics - Anfänger-Themen 2
E Konsolenprogramm in Webseite einbinden Java Basics - Anfänger-Themen 4
N Klassen externe .class einbinden Java Basics - Anfänger-Themen 9
S Interface JNI Interface in Projekt einbinden? Java Basics - Anfänger-Themen 9
S UbuntuTerminal-Kommandos einbinden? Java Basics - Anfänger-Themen 5
S Classpath Externes Package einbinden (zip-Datei) Java Basics - Anfänger-Themen 9
L Referenced Libraries korrekt in Java Applet einbinden.. Java Basics - Anfänger-Themen 2
J [JAVA] Bild in jar einbinden (Hintergrundbild)? Java Basics - Anfänger-Themen 8
P OOP JXDatePicker einbinden Java Basics - Anfänger-Themen 5
X Klassen Klassen in Projekte einbinden mit Eclipse Java Basics - Anfänger-Themen 6
E Browser in Java App einbinden? Java Basics - Anfänger-Themen 3
K Klassen externe JAR in Programm einbinden Java Basics - Anfänger-Themen 5
H jar datei einbinden Java Basics - Anfänger-Themen 17
L Klassen JAVA Klasse in JSP einbinden Java Basics - Anfänger-Themen 4
S Input/Output audio in Programm einbinden Java Basics - Anfänger-Themen 17
Y Bild mit poi in PPT einbinden - geht nicht Java Basics - Anfänger-Themen 4
D Libarie und Javadoc in Netbeans einbinden? Java Basics - Anfänger-Themen 6
F Text in Spiel einbinden Java Basics - Anfänger-Themen 17
J class Datei einbinden Java Basics - Anfänger-Themen 5
B fremde klasse in eclipse projekt einbinden Java Basics - Anfänger-Themen 8
F Dateien in jar einbinden Java Basics - Anfänger-Themen 14
C class Dateien einbinden Java Basics - Anfänger-Themen 22
C Package einbinden - "cannot access" Java Basics - Anfänger-Themen 5
H Panels in Frame einbinden Java Basics - Anfänger-Themen 3
I HUMath Bibliothek einbinden?! Java Basics - Anfänger-Themen 4
C Website in *.java einbinden?? Java Basics - Anfänger-Themen 5
A wav Datei einbinden Java Basics - Anfänger-Themen 2
A OpenOffice Base in Java einbinden Java Basics - Anfänger-Themen 3
Weltall 7 Applet in HTML einbinden Java Basics - Anfänger-Themen 3
A Java in Html einbinden Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben