【发布时间】:2012-11-20 04:50:18
【问题描述】:
我在 windows 中使用 Code::Blocks。
我创建了一个 dll 项目试图获得一些 JNI 实践。
在我的javah生成的.h文件中,有#include jni.h,但是当我尝试编译它时,它一直说jni.h:没有这样的文件或目录。
我认为它与类路径有关,但我不知道它是什么!这可能是我必须在 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
编辑:
于是我做了设置-->编译器和调试器-->搜索目录-->在编译器下添加了“$(JAVA_HOME)\include”和“$(JAVA_HOME)\include\win32”,就可以找到了!
【问题讨论】:
-
请编辑您的问题并添加源代码。
-
是javah.exe生成的机器,我没碰过。这个文件给我错误说 jni.h: no such file or directory
标签: java java-native-interface codeblocks