JNI Verständnisprobem!

Status
Nicht offen für weitere Antworten.
T

tom21

Gast
Hallo Leute,

Ich arbeite gerade an einem Java- Projekt. Dort muss ich auf eine Hardwarekomponente zugreifen. Ich möchte das über JNI tun.

Für den Zugriff auf die Hardware wurden folgende Dateien bereitgestellt.

testAPI.h und testAPI.lib und einige .dll Dateien die in der testAPI.lib gebraucht werden.

In der testAPI.h sind die Funktionen aufgelistet die ich von Java aus aufrufen möchte.


Meine Frage:
Ich habe zb. eine klasse

Code:
public class JniTest {
public static native int readPort();
}


Bei der JNI Headergenerierung erzeugt er folgenden Funktionskopf.

Code:
JNIEXPORT jint JNICALL Java_JniTest_readPort (JNIEnv *, jclass);

Was ich nicht verstehe ist:

Ich habe doch schon eine Header Klasse die testAPI.h. dort sind die Funktionen schon aufgelistet die ich brauche.

Muss ich jetzt die Funktion
Code:
JNIEXPORT jint JNICALL Java_JniTest_readPort (JNIEnv *, jclass);
implementieren und dann von dort aus, meine originale Funktionen von der testAPI.h aufrufen??????

zb.
Code:
JNIEXPORT jint JNICALL Java_JniTest_getNumber (JNIEnv * pEnv, jclass clazz)
{ 
return readPort(); // Die Funktion aus der testAPI.h

}

Habe ich das richtig verstanden??? Wäre nett wenn mir jemand das erklären könnte. Die Tutorials haben mit leider nicht geholfen.
 
G

Guest

Gast
tom21 hat gesagt.:
...Muss ich jetzt die Funktion
Code:
JNIEXPORT jint JNICALL Java_JniTest_readPort (JNIEnv *, jclass);
implementieren und dann von dort aus, meine originale Funktionen von der testAPI.h aufrufen??????
..
Genau so, es sei denn, du hast den Code von testAPI, dann kannst du dir den Umweg sparen
und den Code in deine Implementierung übernehmen.
 
G

Guest

Gast
hallo,

danke für die schnelle Antwort.

Ich möchte schon die Originalfunktionen nutzen und nicht den Code einfach kopieren und in die native funktion kopieren.
Ich weis nicht wirklich ob ich den Code habe...
Steht der Code in der testAPI.lib??? und kann ich denn Code dort überhaupt sehen??
Ich verstehe nicht was die testAPI.lib überhaupt ist.


gruss Tom
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben