web-dev-qa-db-fra.com

jni.h: aucun fichier ou répertoire de ce type

J'utilise Code :: Blocks dans les fenêtres.

J'ai créé un projet dll en essayant d'obtenir une certaine pratique JNI.

Dans mon fichier .h généré par javah, il y a #include jni.h, mais quand j'essaye de le compiler, il continue de dire jni.h: aucun fichier ou répertoire de ce type.

Je pense que cela a quelque chose à voir avec classpath, mais je ne sais pas ce que c'est! C'est probablement le réglage que je dois changer dans Code :: Blocks

Quelqu'un pourrait-il m'aider à résoudre ce problème? Merci beaucoup

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Vector3D */

#ifndef _Included_Vector3D
#define _Included_Vector3D
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Vector3D
 * Method:    magnitude
 * Signature: ()D
 */
JNIEXPORT jdouble JNICALL Java_Vector3D_magnitude
  (JNIEnv *, jobject);

/*
  * Class:     Vector3D
 * Method:    mult
 * Signature: (LVector3D;I)LVector3D;
 */
JNIEXPORT jobject JNICALL Java_Vector3D_mult
  (JNIEnv *, jobject, jobject, jint);

/*
 * Class:     Vector3D
 * Method:    equals
 * Signature: (LVector3D;)Z
 */
JNIEXPORT jboolean JNICALL Java_Vector3D_equals
  (JNIEnv *, jobject, jobject);

/*
 * Class:     Vector3D
 * Method:    dotProduct
 * Signature: (LVector3D;LVector3D;)D
 */
JNIEXPORT jdouble JNICALL Java_Vector3D_dotProduct
  (JNIEnv *, jclass, jobject, jobject);

/*
 * Class:     Vector3D
 * Method:    makeNormalized
 * Signature: (LVector3D;)LVector3D;
 */
JNIEXPORT jobject JNICALL Java_Vector3D_makeNormalized
  (JNIEnv *, jclass, jobject);

/*
 * Class:     Vector3D
 * Method:    crossProduct
 * Signature: (LVector3D;LVector3D;)LVector3D;
 */
JNIEXPORT jobject JNICALL Java_Vector3D_crossProduct
  (JNIEnv *, jclass, jobject, jobject);

#ifdef __cplusplus
}
#endif
#endif

MODIFIER:
J'ai donc fait Paramètres -> Compilateur et débogueur -> Rechercher dans les répertoires -> et ajouté "$ (Java_HOME)\include" et "$ (Java_HOME)\include\win32" sous Compilateur, et c'était capable de le trouver!

28
Leshi Wang

Vous devez ajouter le chemin JDK au chemin d'inclusion, afin que le compilateur connaisse l'emplacement du fichier.

Les fenêtres:

/I "$(Java_HOME)\include" /I "$(Java_HOME)\include\win32"

Linux:

-I"${Java_HOME}/include" -I"${Java_HOME}/include/linux"

Mac:

-I"${Java_HOME}/include" -I"${Java_HOME}/include/darwin"
35
Naytzyrhc