2016-11-20 2 views
1

は、私は次のヘッダーファイルのコンパイルエラーを取得しています:C++ JNIのためのコンパイルエラー:不明なタイプ名JNIEnvのJINTのJavaVM

#include <jni.h> 

#ifdef __cplusplus 
extern "C" { 
#endif 

typedef struct { 
    jint x1; 
    jint y1; 
    jint x2; 
    jint y2; 
} Bounds; 

... 

#ifdef __cplusplus 
}; 
#endif 

などjobjectへなど、他のJNI参照が、ありますが、JNIEnvJavaVM、 のjni.h>ヘッダーが欠落しているとは言いません(それはありましたが、インクルードパスを追加することで簡単に修正できました)。私はヘッダーファイルをチェックしており、そのヘッダーには型が定義されています(そして< jni_md.h>)。

これは意味がありません。何か案は?

EDIT:次のエラーテキストを含めるのを忘れていました。

g++ -O2 -fPIC -fpermissive -I. -I.. -I/usr/include -I/usr/local/include/libavcodec -I/usr/local/include/libavdevice -I/usr/local/include/libavformat -I/usr/local/include/libswscale -I/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers -DUNIX -shared -c -o Plugin.o Plugin.cpp 
clang: warning: argument unused during compilation: '-shared' 
In file included from Plugin.cpp:19: 
In file included from Plugin.h:16: 
Data.h:24:5: error: unknown type name 'jint' 
    jint x1; 
    ^
Data.h:25:5: error: unknown type name 'jint' 
    jint y1; 
    ^
Data.h:26:5: error: unknown type name 'jint' 
    jint x2; 
    ^
Data.h:27:5: error: unknown type name 'jint' 
    jint y2; 
    ^
+2

完全なエラーテキストを含めてください。 – Leon

+1

@stackoverflow.com/questions/7212982/ –

+0

@ ZabojCampulaを参照してください。私はヘッダーを見つけることに問題がないと言いましたが、それらは含まれています。 –

答えて

1

Cのコードは明白な誤りがなく、開発環境ならば、それはコンパイル可能です:あなたはあなたのコードをコンパイルしますが、共有ライブラリを構築しながら、あなたはそれを使用する必要があります

-shared 

を使用していません正しく設定されています。したがって疑わしい領域は開発環境であり、おそらくJNIヘッダーファイルがないか破損している可能性があります。

Cコンパイラは、オプションが適用されている場合にのみ、コンパイラがプリプロセッサを実行するオプション-Eを提供します。解析される出力には、ヘッダーファイルが見つかった場所が含まれていますifdefsなどが展開されます。

プリプロセッサの出力に、間違ったjni.hファイルが含まれています。解決方法は、適切なjni.hを含むプロジェクトインクルードパスを適切に設定することです。

0

これは確かに奇妙です。

あなたはここでうまくコンパイル非常によく似たコードを見て、取ることができます:

https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo025 

ただ1人の発言をあなたのケースで。

# compile the code 
g++ -O2 -fPIC -fpermissive -I/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers -DUNIX -c -o c/recipeNo025_HelloWorld.o c/recipeNo025_HelloWorld.cpp 

# make shared lib out of it 
g++ -g -shared c/recipeNo025_HelloWorld.o -o lib/libHelloWorld.$(EXT) 
関連する問題