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

Les*_*ang 28 java java-native-interface codeblocks

我在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 <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
Run Code Online (Sandbox Code Playgroud)

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

Nay*_*rhc 35

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

视窗:

/I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32"
Run Code Online (Sandbox Code Playgroud)

Linux的:

-I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/linux"
Run Code Online (Sandbox Code Playgroud)

苹果电脑:

-I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/darwin"
Run Code Online (Sandbox Code Playgroud)

  • 我不知道这意味着什么,我如何在代码块中添加它?你是什​​么意思/我 (3认同)
  • 谢谢!所以我做了设置 - >编译器和调试器 - >搜索目录 - >并在编译器下添加了"$(JAVA_HOME)\ include"和"$(JAVA_HOME)\ include\win32",它能够找到它!谢谢 (3认同)