私の作業環境は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つのエラーメッセージに直面しました。
- jni.h: そのようなファイルまたはディレクトリはありません
- 「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コマンドで自動生成したので問題ないと思います。
前向きなアドバイスをありがとうございます。