Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java h:没有这样的文件或目录_Java_Java Native Interface_Codeblocks - Fatal编程技术网

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

Java h:没有这样的文件或目录,java,java-native-interface,codeblocks,Java,Java Native Interface,Codeblocks,我在windows中使用代码::块 我创建了一个dll项目,试图获得一些JNI实践 在javah生成的.h文件中,有#include jni.h,但当我试图编译它时,它总是说jni.h:没有这样的文件或目录。 我认为它与类路径有关,但我不知道它是什么!这可能是我必须在代码::块中更改的设置 有人能帮我修一下吗? 非常感谢 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header f

我在windows中使用代码::块

我创建了一个dll项目,试图获得一些JNI实践

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

我认为它与类路径有关,但我不知道它是什么!这可能是我必须在代码::块中更改的设置

有人能帮我修一下吗? 非常感谢

/* 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
/*不要编辑此文件-它是机器生成的*/
#包括
/*类Vector3D的标题*/
#ifndef包括向量3D
#定义包含的向量3D
#ifdef_uucplusplus
外部“C”{
#恩迪夫
/*
*类别:Vector3D
*方法:震级
*签名:()D
*/
JNIEXPORT jdouble JNICALL Java_Vector3D_震级
(JNIEnv*,jobject);
/*
*类别:Vector3D
*方法:mult
*签名:(LVETRO3D;I)LVETRO3D;
*/
JNIEXPORT作业对象JNICALL Java_Vector3D_mult
(JNIEnv*,jobject,jobject,jint);
/*
*类别:Vector3D
*方法:等于
*签名:(LVector3D;)Z
*/
JNIEXPORT jboolean JNICALL Java_Vector3D_equals
(JNIEnv*,jobject,jobject);
/*
*类别:Vector3D
*方法:点积法
*签名:(LVector3D;LVector3D;)D
*/
JNIEXPORT jdouble JNICALL Java_Vector3D_dotProduct
(JNIEnv*,jclass,jobject,jobject);
/*
*类别:Vector3D
*方法:makeNormalized
*签名:(LVETOR3D;)LVETOR3D;
*/
JNIEXPORT作业对象JNICALL Java_Vector3D_makeNormalized
(JNIEnv*,jclass,jobject);
/*
*类别:Vector3D
*方法:叉积法
*签名:(LVETRO3D;LVETRO3D;)LVETRO3D;
*/
JNIEXPORT作业对象JNICALL Java_向量3D_叉积
(JNIEnv*,jclass,jobject,jobject);
#ifdef_uucplusplus
}
#恩迪夫
#恩迪夫
编辑:

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

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

窗口:

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

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


请编辑您的问题并添加源代码。这是由javah.exe生成的机器,我没有碰它。这个文件给了我一个错误,告诉我jni.h:没有这样的文件或目录我不知道它是什么意思,我如何在代码块中添加它?你是什么意思!所以我做了设置-->编译器和调试器-->搜索目录-->并在编译器下添加了“$(JAVA\U HOME)\include”和“$(JAVA\U HOME)\include\win32”,它能够找到它!感谢上面命令的含义是:-我只是为了防止您尚未设置JAVAHOME,以便您可以放置包含jni.h文件的目录路径。我正在使用Visual studio community 2013,如何将JDK路径添加到包含路径。我不是专家,所以不确定如何处理/I“$(JAVA\U HOME)\include”/I“$(JAVA\U HOME)\include\win32”@mrcet007请查看上面Leshi的评论,我认为它仍然有效。
-I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/darwin"