Compiler Le fichier JAVA (Possedant une methode NATIVE) JNI
Bonjour a tous,
J'ai mon fichier JAVA possedant une methode native en C/C++,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| package fieldAccess;
public class FieldAccess {
static int si;
String s;
private native void accessFields();
public static void main(String args[]) {
FieldAccess c = new FieldAccess();
FieldAccess.si = 100;
c.s = "abc";
c.accessFields();
System.out.println("In Java:");
System.out.println(" FieldAccess.si = " + FieldAccess.si);
System.out.println(" c.s = \"" + c.s + "\"");
}
static {
System.loadLibrary("FieldAccesslib");
}
} |
j'ai deja creer les .class, les .h .lib etc...
Mon fichier native est:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include <stdio.h>
#include <jni.h>
#include "FieldAccess.h"
JNIEXPORT void JNICALL
Java_FieldAccess_accessFields(JNIEnv *env, jobject obj)
{
jclass cls = (*env)->GetObjectClass(env, obj);
jfieldID fid;
jstring jstr;
const char *str;
jint si;
printf("In C:\n");
fid = (*env)->GetStaticFieldID(env, cls, "si", "I");
if (fid == 0) {
return;
}
si = (*env)->GetStaticIntField(env, cls, fid);
printf(" FieldAccess.si = %d\n", si);
(*env)->SetStaticIntField(env, cls, fid, 200);
fid = (*env)->GetFieldID(env, cls, "s", "Ljava/lang/String;");
if (fid == 0) {
return;
}
jstr = (*env)->GetObjectField(env, obj, fid);
str = (*env)->GetStringUTFChars(env, jstr, 0);
printf(" c.s = \"%s\"\n", str);
(*env)->ReleaseStringUTFChars(env, jstr, str);
jstr = (*env)->NewStringUTF(env, "123");
(*env)->SetObjectField(env, obj, fid, jstr);
} |
J'ai pu creer mon .dll avec avec la comamnde shell.
A la fin en faisant la commande shell java FieldAccess
Ca marche tres bien.
Mais j'aimerai compiler avec ECLISPE, mais ca ne marche pas:
Le message d'erreur est:
Citation:
Exception in thread "main" java.lang.UnsatisfiedLinkError: accessFields
at fieldAccess.FieldAccess.accessFields(Native Method)
at fieldAccess.FieldAccess.main(FieldAccess.java:11)
Pourriez vous m'aider SVP pour que je puisse faire compiler avec Eclipse.
Je suis un debutant pour l'utilisation d'Eclipse mais dans ma compagnie prefere d'Utiliser Eclipse
Merci.
Serge