jni.h:没有这样的文件或目录

我在Windows中使用Code :: Blocks。

我创建了一个dll项目试图获得一些JNI练习。

在javah生成的.h文件中,有#include jni.h,但是当我尝试编译它时,它一直在说jni.h:没有这样的文件或目录。

我认为它与classpath有关,但我不知道它是什么! 它可能设置我必须在Code :: Blocks中更改

有人可以帮我解决一下吗? 非常感谢

/* DO NOT EDIT THIS FILE - it is machine generated */ #include  /* 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 

编辑:
所以我做了设置 – >编译器和调试器 – >搜索目录 – >并在编译器下添加了“$(JAVA_HOME)\ include”和“$(JAVA_HOME)\ include \ win32”,它能够找到它!

您必须将JDK路径添加到包含路径,以便编译器知道文件的位置。

视窗:

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

Linux的:

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

苹果电脑:

 -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/darwin"