我的工作环境“__attribute__”是MAC OSX 10.8.3。jni.h和预期“=”,“”,“”,“ASM”或之前“无效”
现在我正在测试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:预期 '=' 没有这样的文件或目录
- , ' ' ';',前 '无效'
'ASM' 或' 属性'我搜索了互联网,并找到了一个解决方案,说升级我的jdk到1.7。但我不能这样做,因为其他人使用1.6。所以我需要另一个解决方案来处理jdk 1.6的这个问题。
对于第二个问题,我在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自动生成的。
我非常感谢您的高级建议。
你见过'jni.h:没有这样的文件或目录吗?您的/ usr/include/usr/local/include文件中没有'jni.h'文件,这对您的程序是必需的。 – MYMNeo 2013-04-25 07:13:28