JNI Datentypen

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Morgen,

ich programmier gerade mit dem JNI und mir sind die Datentypen, welche zwischen Java und C konvertiert werden müssen, nicht ganz klar.

Code:
JNIEXPORT jstring JNICALL Java_Calc_pow (JNIEnv *env, jobject obj, jstring s, jdouble d2)
{
const char * str = (*env)—>GetStringUTFChars(env,s,0);

Weiß jemand was das env ist und was GetStringUTFChars genau macht,
env dürfte meiner Meinung nach ein Zeiger auf eine Struktur sein,
mit (*env) greif ich auf die Struktur zu und mit -> dann auf die einzelnen Attribute der Struktur,
Kann das sein und was kann ich eigentlich mit jobject obj machen?

lg
 

Marco13

Top Contributor
Env ist das "Environment", sozusagen die Java-Laufzeitumgebung - die Haupklasse für die Interaktion zwischen Java und C. Env hat aber AFAIK keine Attribute, sondern stellt nur die Methoden bereit, die man für diese Interaktion braucht - z.B. sich Arrayelemente zu holen, Methoden auf Java-Objekten aufzurufen ... oder Java-Strings in C-char*s umzuwandeln - und letzteres macht man mit der Methode GetStringUTFChars

Das jobject dort ist das Objekt, auf dem die Methode aufgerufen wurde. D.h. bei sowas wie
Code:
class Foo
{
    native void someFunction();
}

Foo foo = new Foo();
foo.function();
ist das Objekt, das dort ankommt, gerade das "foo". Man kann dann auf Attribute und weitere Methoden des Objektes zugreifen.

Du solltest diesbezüglich ein Tutorial lesen.
 

MQue

Top Contributor
>> Methoden auf Java-Objekten aufzurufen

Super, das Hilft mir schon einiges weiter, hab schon ein Tutorial gelesen und komme mit dem jetztigen Wissen leicht über die Runden.
Eines ist mir noch nicht ganz klar, was ist der Unterschied zwischen jni und jna,
das ist mir noch nicht ganz klar,
lg und danke,
 

Marco13

Top Contributor
JNI und JNA sind zueinander wie ein Huhn und ein Hund ... ja, die ersten beiden Buchstaben sind gleich ... Naja, mal im ernst: GANZ grob vereinfacht: Mit JNI kann man eigenen C-Code schreiben und von Java aus ausführen lassen. Mit JNA kann man von Java aus auf eine bereits existierende C-Bibliothek zugreifen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Generische Datentypen + Baumstruktur Softwareentwicklung 33

Ähnliche Java Themen

Neue Themen


Oben