Bonjour
J'ai un repertoire dans le quels j'ai le fichier java suivant:
que je compile via javacc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class Coucou { private native void affiche(); public static void main(String args[]) { new Coucou().affiche(); } static { System.loadLibrary("coucou"); } }
Ensuite, je genere dans le même repertoire , un fichier coucou.h via javah.
j'implemente comme suit ,coucou.c à partir de coucou.h
je compile via g++ -I.... -> j'obtiens un coucou.o
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 /* coucou.C */ #include <jni.h> #include "coucou.h" #include <iostream> using namespace std; JNIEXPORT void JNICALL Java_Coucou_affiche (JNIEnv *, jobject) { cout << "Depuis code C++ \n ... j'affiche ...\n COUCOU"; }
j'utilise la commande g++ -shared ... -> j'obtiens un coucou.so
Super!
Sauf que quand je lance 'java Coucou', il me sort une erreur
J'ai bien essayé de mettre les chemins dans LD_LIBRARY_PATH, etcetc, mais rien ne semble fonctionner...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 xception in thread "main" java.lang.UnsatisfiedLinkError: no coucou in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1028) at Coucou.<clinit>(Coucou.java:12) Could not find the main class: Coucou. Program will exit.
Notez bien que les fichier java, class, o, h, c, so sont tous dans le même repertoire.
Que faire ?
Partager