編譯JNI.h報大量錯


大家好,我想用jni給我的C++包殼,以便他用JAVA程序調用

我編譯的時候發現jni.h報出了大量的錯誤

我用gcc -c jni.h   返回:

In file included from jni.h:27:
jni_md.h:16: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘jlong’
jni.h:108: error: expected specifier-qualifier-list before ‘jlong’
jni.h:202: error: expected ‘)’ before ‘*’ token
jni.h:204: error: expected ‘;’ before ‘jclass’
jni.h:1877: error: expected ‘)’ before ‘*’ token
jni.h:1879: error: expected ‘;’ before ‘jint’
jni.h: In function ‘__declspec’:
jni.h:1917: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘JNI_GetDefaultJavaVMInitArgs’
jni.h:1919: error: expected declaration specifiers before ‘__declspec’
jni.h:1922: error: expected declaration specifiers before ‘__declspec’
jni.h:1926: error: expected declaration specifiers before ‘__declspec’
jni.h:1929: error: expected declaration specifiers before ‘__declspec’
jni.h:1930: error: expected ‘{’ at end of input


-----------------------
如果我要是用g++ 編譯,返回的錯誤更多?請問這是為什么

5 个解决方案

#1


幫頂一次

#2


jni.h肯定包含了其他系統頭文件或者自定義文件你沒有包含。

#3


應該使用-I把jni的路徑加入gcc的頭文件搜索路徑。
不過你怎么直接編譯起頭文件來了?

#4


缺少很多頭文件的, 用-I加上頭文件路徑。

#5


你想給C++程序包殼子的方法是把jni.h文件include到c++文件中,然后編譯那個C++文件。

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

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_HelloWorld_sayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com