nlink (interface zwischen java und c)

Status
Nicht offen für weitere Antworten.
G

Giftstachel

Gast
Einen wunderschönen wünsche ich.

an sich bin ich ja kein wirklicher Anfänger mehr, komme mir aber seit inzwischen 4 Tagen so vor.

folgende problemstellung:
ich möchte mit hilfe von nlink (https://nlink.dev.java.net/parameter-conversion.html) eine schnittstelle zu einem Programm in c herstellen.

mein problem dabei ist, ich verstehe ehrlich gesagt kaum ein wort von dem, wie dieses nlink funktioniert.
also d.h. die beispiel-classe in der die msg-box ansteuer lässt, ist noch kein problem. die habe ich absolut im griff.
soweit so gut. nun zum schwierigeren teil des ganzen.

ich möchte an eine dll (wird für das interface benötigt) daten übergeben.

Code:
int InitTrans(int slotnr, int bisintern, int irgendwas, int irgendwasanderes );

und dann hätte ich natürlich auch gerne eine rückantwort von c.

Code:
void initTransReturn( int hModule, StringBuffer filename, int size );

ich habe jedoch nicht die spur einer ahnung, ob überhaupt irgendetwas übergeben wird, bzw, ob ich die ganze geschichte in dieser richtung verstanden habe, oder mein geist davon einfach schon so zerrüttet ist, das ich den wald vor lauter bäumen nicht sehe.

besten dank, wenn mir da jemand helfen könnte.

beste grüße,
Giftstachel
 
T

tuxedo

Gast
Ich glaub du drückst dich unverständlich aus.

Wie sieht denn die Methodensignatur der Nativen Methode aus? Bzw. was steht zur der Methode im Header-File?

Und wie hast du das Interface in Java definiert?
Mach mal etwas konkretere Beispiele und schreib dazu was C und was Java sein soll bzw ist.

Nebenbei: Hab auch noch nix mit NLink gemacht. Aber das sieht doch recht vool aus. JNI ist doch recht aufwendig und JNA ist für meinen geschmack etwas dünn dokumentiert. NLink sieht da etwas vielversprechender aus.

- Alex
 
G

Guest

Gast
oh, ääh, ja. stimmt. das braucht man ja dafür. ^^

hier der headder: (vorgefertigt von fremdentwickler)

Code:
#ifndef INC_DLLSKEL_H
#define INC_DLLSKEL_H


#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include <windows.h>

#define DLLIMPORT __declspec(dllimport)

DLLIMPORT int WINAPI Write(int slot,char* pOut,int size);
DLLIMPORT int WINAPI Read(int slot,char* pIn,int size);
DLLIMPORT int WINAPI InitTrans(int slot,HWND hWnd);
DLLIMPORT int WINAPI ExitTrans(int slot,HWND hWnd);
DLLIMPORT int WINAPI BlockingRead(int slot,char* pIn,int size,int timeout);


#ifdef __cplusplus
}
#endif    /* __cplusplus */


#endif  // INC_DLLSKEL_H

interface-definition:

Bevor lesend oder schreibend auf einem Slot zugegriffen werden kann muss dieser einmalig für eine Applikationssession initialisiert werden.

Init( PORT, Zeiger auf Ausgabe Fenster ) in der xyz.dll

Um Daten an andere Programme zu senden...

Write( PORT, Zeiger auf Datenblock, Größe des übergebenen Datenblocks )

Um selbst Daten auslesen zu können

Read( PORT, Zeiger auf Datenblock, Größe des übergebenen Datenblocks )



und hier das Java,
damit soll man das ansteuern können. wie gesagt, ich blicke da bei nlink nicht wirklich durch, vermutlich mangelndes englisch, mit zu wenig erfahrung betreffend interfaces, und alles was ich bisher versucht habe, ist gelinde gesagt schrott :(


LPCSTR

The following example shows how to map String to LPCSTR.
Code:
// Java
void foo(@MarshalAs(CSTR) String name);
// C
void foo(LPCSTR name);
Receiving String

The following example shows how to receive a string from a native method. Use @MarshalAs(CSTR) for the non-Unicode version. StringBuilder can be used equally.
Code:
// Java
void GetModuleFileName( int hModule, StringBuffer filename, int size );
// C
void GetModuleFileName( int hModule, LPWSTR filename, int size );
cdecl functions

The following example illustrates how to invoke a cdecl function.
Code:
// Java
@DllMethod(convention=CDECL)
void GetModuleFileName( int a, int b, int c );
// C
void __cdecl GetModuleFileName( int a, int b, int c );
Using Structure

A structure can be represented as NIO ByteBuffer, but Javolution offers much more convenient access to a structure. The following example illustrates how to do this:
Code:
// taken from Javolution Structure example
public class Date extends Struct {
    public final Unsigned16 year = new Unsigned16();
    public final Unsigned8 month = new Unsigned8();
    public final Unsigned8 day   = new Unsigned8();
}
public class Student extends Struct {
    public final Utf8String  name   = new Utf8String(64);
    public final Date        birth  = inner(new Date());
    public final Float32[]   grades = array(new Float32[10]);
    public final Reference32<Student> next =  new Reference32<Student>();
}
Student foo( Student student );

// C
struct Date {
    unsigned short year;
    unsigned char month;
    unsigned char day;
};
struct Student {
    char        name[64];
    struct Date birth;
    float       grades[10];
    Student*    next;
};
Student* foo( Student* pStudent );


-giftie
 
T

tuxedo

Gast
Naja, laut Tutorial von nlink würd ich das so machen:

C-Header:
int WINAPI InitTrans(int slot,HWND hWnd);

Wird zu
Java Interface:


Code:
@DllClass
interface BeliebigerInterfaceName{
	@DllMethod
	int InitTrans( int slot, int hWnd);
}

Was HWND ist weiß ich nicht. Aber im Beispiel wirds auf Java-Seite zu einem Integer.
Die restlichen Methoden würde ich genauso mappen.

Wenn du das ganze fertig gemapped hast würd ich mal nen Testlauf machen und schauen ob es Fehlermeldungen gibt. Wenn ja kannst du dann dort einhaken und schauen warum das ganze nicht ging.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I No Jakarta Enterprise Beans found with interface ignorieren? Java Basics - Anfänger-Themen 2
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Abstrakt oder Interface Java Basics - Anfänger-Themen 3
Say public/default Interface Java Basics - Anfänger-Themen 9
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
I Browser integriert in Desktop Applikation - Webcam interface not found Java Basics - Anfänger-Themen 26
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
J Interface Comparable<T> Java Basics - Anfänger-Themen 10
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
D Interface Verständisfrage Java Basics - Anfänger-Themen 8
U Interface | constructor injection Java Basics - Anfänger-Themen 5
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
T Interface Map und Map.Entry Java Basics - Anfänger-Themen 4
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
I JSON und Interface Java Basics - Anfänger-Themen 3
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
L Interface & Comparable Java Basics - Anfänger-Themen 15
T Interface Java Basics - Anfänger-Themen 0
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
A Interface Kuddelmuddel Java Basics - Anfänger-Themen 4
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
H abstract und interface Java Basics - Anfänger-Themen 4
F Interface Casting Java Basics - Anfänger-Themen 13
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Interface Java Basics - Anfänger-Themen 2
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
T Interface Methode im Interface mit mehreren Parametern Java Basics - Anfänger-Themen 10
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
E Interface nur von abstrakter Klasse implementierbar?! Java Basics - Anfänger-Themen 1
J Vererbung Abstrake Klasse <-> Interface Java Basics - Anfänger-Themen 5
C Interface als Datentyp eines Attributes? Java Basics - Anfänger-Themen 6
U Interface Bedeutung "Code to an interface rather than to an implementation." Java Basics - Anfänger-Themen 4
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
N Interface Interface Erstellung Java Basics - Anfänger-Themen 3
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
T Vererbung Interface Java Basics - Anfänger-Themen 5
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
B Erste Schritte Wie definiere ich in Java ein Interface? Java Basics - Anfänger-Themen 6
L OOP Interface Prinzip? Java Basics - Anfänger-Themen 6
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
A Frage zu Interface Java Basics - Anfänger-Themen 16
J Interface Java Basics - Anfänger-Themen 3
W Interface Java Basics - Anfänger-Themen 1
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
J Frage zu dem Thema interface Java Basics - Anfänger-Themen 5
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
S Interface-Methode abrufen? Java Basics - Anfänger-Themen 2
G Vererbung Klasse erbt von abstrakter Klasse implementiert Interface Java Basics - Anfänger-Themen 2
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
P interface Java Basics - Anfänger-Themen 1
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
M Interface als Datentyp Java Basics - Anfänger-Themen 12
K Interface Methoden überschreiben Java Basics - Anfänger-Themen 1
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
G Interface klasse Java Basics - Anfänger-Themen 4
N Interface Interface (sinnvoll) erzeugen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen


Oben