Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Auf existierende DLL (in C geschrieben) mittels JAVA zugreifen!

DeepThinking / 17 Antworten / Flachansicht Nickles

Hallo, ich möchte auf eine in C geschriebene DLL mittles Java zugreifen. Also die DLL ist -wie gesagt - schon vorhanden; ich will lediglich sie in meinem Java-Programm einbinden, damit ich bestimmte Funktionen aufrufen kann. Ich habe Java Native Interface angeschaut und kann eigene DLL erstellen, die ich dann in Java-Programmen einbinden kann(mit System.loadLibrary). Aber was ist, wenn die DLL schon existiert!?


Konkret: ich habe FRME_GRABBER.DLL (in C geschrieben) und will sie im JAVA-Programm benutzen. z.B. möchte die Funktion long Grab(long fgh, FRAME *frh), was schon in dieser FRAME_GRABBER.DLL implementiert ist, in meinem JAVA-Programm benutzen.

bei Antwort benachrichtigen
vergisses DeepThinking „Danke! Ich versuche es über Wrapper Funktionen..“
Optionen

Hi,

erst mal zu den Calling Conventions innerhalb von Java.
Grundsätzlich kennt Java nur ein Call by Value.
Wenn Du aber einen Parameter übergibts, der nicht von einem
Basis Datentyp wie z. B. Integer, sondern ein Java Objekt ist,
so wird die Objectvariable zwar by Value übergeben,
ist aber eigentlich ein Handle auf das Original.
Damit hast Du eine ähnliche Verarbeitung wie by Pointern (call by Reference).
siehe auch
http://mindprod.com/jglosscallbyreference.html

Bei Aufrufen von nativen Methoden über JNI sieht es etwas anders aus.
Beispiel:
Java Methodendefinition:
public native static int tuwas(JFrame MyFrame);

Du kompilierst das Java Programm, bekommst ein *.class File
und erzeugst dann das C Header File mit "javah -jni

bei Antwort benachrichtigen
Danke viel mals! DeepThinking
Danke viel mals! vergisses