1

私の作業環境はmac OSX 10.8.3です。

今、私は JNI をテストしています。

HelloJNI.java ファイルを作成し、ターミナルで javac と javah コマンドを実行します。

それで、HelloJNI.java、HelloJNI.class、org_owls_jni_HelloJNI.h ファイルを取得しました。

それから私は置きます

gcc -g -l/usr/local/java/include -l/usr/local/java/include/linux -shared HelloJNI.c -o libhello.so

プログラムを実行するコマンド。そして2つのエラーメッセージに直面しました。

  1. jni.h: そのようなファイルまたはディレクトリはありません
  2. 「void」の前に「=」、「,」、「;」、「asm」、または「<strong>attribute」が必要です</li>

インターネットを検索したところ、jdk を 1.7 にアップグレードするという解決策が見つかりました。でも、他の人が1.6を使っているので、それはできません。したがって、jdk 1.6 でこの問題を処理するには、別の解決策が必要です。

2 つ目の問題については、stackoverflow で記事を見つけました。彼らは、いくつかの構文が欠けていると言っています。しかし、私にとっては、ボイドの前に問題が見つかりません。私のヘッダーファイルを見てください。

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_owls_jni_HelloJNI */

#ifndef _Included_org_owls_jni_HelloJNI
#define _Included_org_owls_jni_HelloJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     org_owls_jni_HelloJNI
 * Method:    printMessage
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_org_owls_jni_HelloJNI_printMessage
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

ここはjavahコマンドで自動生成したので問題ないと思います。

前向きなアドバイスをありがとうございます。

4

1 に答える 1