skratchi.at
Ensign
- Registriert
- Dez. 2008
- Beiträge
- 205
Hi Leute =)
ich habe ein problem mit der JNI von java und bekomme es nicht gelöst.
ich habe eine dll die in c geschrieben wurde und möcht die beinhalteten funktionen in java nutzen.
die funktionen beschäftigen sich mit der kommunikation mit einem interfaceboard.
eig wär ich davon ausgegangen das dies ohne weiters mal möglich ist, da sich das jni doch damit beschäftigt oder nicht?! protierung von c code in java oder stimmt das nur wenn man den c code selber schreibt.
ich hab mal folgende schritte gemacht.
- java projekt erstellt - zwangsweise
- eine klasse erstellt die die native funktionen zur verfügung stellt
- und eine andere klasse erstellt, die das main enthält und eben die funktionen mal testweise aufrufen soll
- weiters habe ich auch eine header datei angelegt mit javah, was ich iwie herausgefunden habe, das man es braucht.
aber wenn ich das ganze ausführe kommt folgender fehler:
Exception in thread "main" java.lang.UnsatisfiedLinkError: k8055.k8055_funktion.OpenDevice(I)I
at k8055.k8055_funktion.OpenDevice(Native Method)
at k8055.k8055_main.main(k8055_main.java:9)
des öfteren habe ich schon gelesen man braucht eine zwischen dll, nur habe ich nicht gefunden wie diese aussehen soll oder erstellt werden kann.
brauche ich eine?
wenn ja, wie kann ich die erstellen
UND wie soll der code aussehen
(meiner meinung nach, besitze ich genug kenntnisse in c, damit mir das jmd erklären kann, weil gelernt habe ich nocht nicht bzw. werden wir es auch nicht mehr)
wenn nein, was mache ich noch falsch!
wie komme ich am schnellsten zu einem ergebnis, das funktioniert und auch nicht zu schlampig ist.
lg
skratchi
ich habe ein problem mit der JNI von java und bekomme es nicht gelöst.
ich habe eine dll die in c geschrieben wurde und möcht die beinhalteten funktionen in java nutzen.
die funktionen beschäftigen sich mit der kommunikation mit einem interfaceboard.
eig wär ich davon ausgegangen das dies ohne weiters mal möglich ist, da sich das jni doch damit beschäftigt oder nicht?! protierung von c code in java oder stimmt das nur wenn man den c code selber schreibt.
ich hab mal folgende schritte gemacht.
- java projekt erstellt - zwangsweise
- eine klasse erstellt die die native funktionen zur verfügung stellt
Code:
package k8055;
public class k8055_funktion {
static {
System.loadLibrary("K8055D_C");
}
public static native void CloseDevice();
public static native int OpenDevice(int dev_num);
}
Code:
package k8055;
public class k8055_main {
/**
* @param args
*/
public static void main(String[] args) {
int i = k8055_funktion.OpenDevice(0);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
k8055_funktion.CloseDevice();
}
}
- weiters habe ich auch eine header datei angelegt mit javah, was ich iwie herausgefunden habe, das man es braucht.
aber wenn ich das ganze ausführe kommt folgender fehler:
Exception in thread "main" java.lang.UnsatisfiedLinkError: k8055.k8055_funktion.OpenDevice(I)I
at k8055.k8055_funktion.OpenDevice(Native Method)
at k8055.k8055_main.main(k8055_main.java:9)
des öfteren habe ich schon gelesen man braucht eine zwischen dll, nur habe ich nicht gefunden wie diese aussehen soll oder erstellt werden kann.
brauche ich eine?
wenn ja, wie kann ich die erstellen
UND wie soll der code aussehen
(meiner meinung nach, besitze ich genug kenntnisse in c, damit mir das jmd erklären kann, weil gelernt habe ich nocht nicht bzw. werden wir es auch nicht mehr)
wenn nein, was mache ich noch falsch!
wie komme ich am schnellsten zu einem ergebnis, das funktioniert und auch nicht zu schlampig ist.
lg
skratchi