Hallo!
Ich versuche unter Windows eine einfache JNI Anwendung (HelloWorld) zum laufen zu bringen. Ich kann das Java Programm kompilieren, die C- header datei erzeugen, die dll erzeugen, aber bei der Ausführung tritt folgender Fehler auf.
Exception in thread "main" java.lang.UnsatisfiedLinkError: afficheCpp
at Bonjour.afficheCpp(Native Method)
at Bonjour.main(Bonjour.java:26)
Der Teil des Java Programmes funktioniert noch, nur das C++ Programm will nicht. Ich glaube auch nicht, dass es daran liegt, dass die dll nicht im LibraryPath ist, da folgender Fehler auftritt, wenn ich die dll lösche:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloW in java.lib
rary.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at Bonjour.<clinit>(Bonjour.java:19)
Mein Java Programm sieht folgendermaßen aus:
das C++ Programm wie folgt:
code]#include <jni.h>
#include "HelloW.h"
#include <iostream>
using namespace std;
JNIEXPORT void JNICALL Java_Bonjour_afficheCpp (JNIEnv *env, jobject obj)
{
cout<<"Ich heisse Sonja ( en C++)"<<endl;
}[/code]
und die C++ Header Datei wie folgt:
Ich hab' schon alles mögliche ausprobiert, und habe keine Ahnung was ich noch ausprobieren soll. Vielleicht kann mir einer von Euch weiter helfen?
Sonja
Ich versuche unter Windows eine einfache JNI Anwendung (HelloWorld) zum laufen zu bringen. Ich kann das Java Programm kompilieren, die C- header datei erzeugen, die dll erzeugen, aber bei der Ausführung tritt folgender Fehler auf.
Exception in thread "main" java.lang.UnsatisfiedLinkError: afficheCpp
at Bonjour.afficheCpp(Native Method)
at Bonjour.main(Bonjour.java:26)
Der Teil des Java Programmes funktioniert noch, nur das C++ Programm will nicht. Ich glaube auch nicht, dass es daran liegt, dass die dll nicht im LibraryPath ist, da folgender Fehler auftritt, wenn ich die dll lösche:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloW in java.lib
rary.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at Bonjour.<clinit>(Bonjour.java:19)
Mein Java Programm sieht folgendermaßen aus:
Code:
public class Bonjour {
public native void afficheCpp();
//chargement de la librairie c++ HelloWorld
static {System.loadLibrary("HelloW"); }
public static void main (String[] args)
{
System.out.println("coucou (en java)\n");
new Bonjour().afficheCpp();
}
}
das C++ Programm wie folgt:
code]#include <jni.h>
#include "HelloW.h"
#include <iostream>
using namespace std;
JNIEXPORT void JNICALL Java_Bonjour_afficheCpp (JNIEnv *env, jobject obj)
{
cout<<"Ich heisse Sonja ( en C++)"<<endl;
}[/code]
und die C++ Header Datei wie folgt:
Code:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Bonjour */
#ifndef _Included_Bonjour
#define _Included_Bonjour
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Bonjour
* Method: afficheCpp
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_Bonjour_afficheCpp
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
Ich hab' schon alles mögliche ausprobiert, und habe keine Ahnung was ich noch ausprobieren soll. Vielleicht kann mir einer von Euch weiter helfen?
Sonja