N
notizblock
Gast
hallo
habe begonnen mich mit JNI zu beschäftigen.
gcc: 3.4.5 (ubuntu breezy)
java 1.5
folgende Schritte habe ich durchgeführt:
in das aktuelle Verzeichnis wird kopiert "jni.h" (aus dem JDK)
die JAVA Sourcedatei "test.java" erstellt:
die Datei wird übersetzt: javac test.java
dann wird eine Includedatei "test.h" für das C-Programm erzeugt: javah -jni test
danach habe ich das c Source File geschrieben: c_drucke.c
Library path exportiert:
aus dieser Datei wird die shared Library erzeugt mit
beim erzeugen des so-files bekomme ich folgenden Output:
Ist das Problem bekannt?
Leider kenne ich mich in C fast überhaupt ned aus, deswegen weiß ich auch ned recht, wie ich mir da helfen soll.
Könnt ihr mir da weiterhelfen?
mit besten grüßen
flo
habe begonnen mich mit JNI zu beschäftigen.
gcc: 3.4.5 (ubuntu breezy)
java 1.5
folgende Schritte habe ich durchgeführt:
in das aktuelle Verzeichnis wird kopiert "jni.h" (aus dem JDK)
die JAVA Sourcedatei "test.java" erstellt:
Code:
public class test {
public native void drucke(double wert);
public static void main (String[] args) {
new test().drucke(25.8);
}
static {
System.loadLibrary("c_drucke");
}
}
die Datei wird übersetzt: javac test.java
dann wird eine Includedatei "test.h" für das C-Programm erzeugt: javah -jni test
danach habe ich das c Source File geschrieben: c_drucke.c
Code:
#include "test.h"
#include <stdio.h>
#inclede <jni.h>
JNIEXPORT void JNICALL Java_test_drucke
(JNIEnv *env, jobject obj, jdouble wert)
{
printf ("Ergebnis: %10.3lf\n",wert);
}
Library path exportiert:
Code:
LD_LIBRARY_PATH=.
export LD_LIBRARY_PATH
aus dieser Datei wird die shared Library erzeugt mit
Code:
gcc -shared c_drucke.c -o libc_drucke.so
beim erzeugen des so-files bekomme ich folgenden Output:
Code:
flo@malcolm:~/jni$ gcc -shared c_drucke.c -o libc_drucke.so
In Datei, eingefügt von c_drucke.c:1:
test.h:2:17: jni.h: Datei oder Verzeichnis nicht gefunden
In file included from c_drucke.c:1:
test.h:15: Fehler: Syntaxfehler vor "void"
test.h:16: Fehler: Fehler beim Parsen vor »*«-Zeichen
test.h:16: Warnung: Datendefinition hat keinen Typ oder Speicherklasse
c_drucke.c:5: Fehler: Syntaxfehler vor "void"
c_drucke.c:5: Fehler: Fehler beim Parsen vor »*«-Zeichen
c_drucke.c: In function `Java_test_drucke':
c_drucke.c:6: Fehler: »wert« nicht deklariert (erste Benutzung in dieser Funktion)
c_drucke.c:6: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt
c_drucke.c:6: Fehler: für jede Funktion in der er auftritt.)
Ist das Problem bekannt?
Leider kenne ich mich in C fast überhaupt ned aus, deswegen weiß ich auch ned recht, wie ich mir da helfen soll.
Könnt ihr mir da weiterhelfen?
mit besten grüßen
flo