jni.h: そのようなファイルまたはディレクトリはありません 質問する

jni.h: そのようなファイルまたはディレクトリはありません 質問する

私は Windows で Code::Blocks を使用しています。

JNI の練習をするために dll プロジェクトを作成しました。

javah によって生成された .h ファイルには #include jni.h がありますが、コンパイルしようとすると、jni.h: no such file or directory というメッセージが表示され続けます。

クラスパスと関係があると思うのですが、それが何なのかわかりません。おそらく、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」を追加したところ、見つけることができました。

ベストアンサー1

コンパイラがファイルの場所を認識できるように、JDK パスをインクルード パスに追加する必要があります。

ウィンドウズ:

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

リナックス:

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

マック:

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

おすすめ記事