我正在尝试使用 SWIG %native 函数编译本机 JNI 调用,并且我得到头文件的以下异常。我在下面的 makefile 中同时包含 jdk-1.6.0_30/include 和 jdk-1.6.0_30/include/linux,有什么想法吗?我在 32 位 linux 上编译。
样本.h:
JNIEXPORT jobject JNICALL Java_test_jni_GetData (JNIEnv *, jclass);
SWIG.i:
%module Sample
%{
#include "Sample.h"
%}
%include "Sample.h"
%typemap(jstype) DeviceId getID "com.test.jni.DeviceId"
%typemap(jtype) DeviceId getID "com.test.jni.DeviceId"
%typemap(javaout) DeviceId getID { return $jnicall; }
%native(getID) DeviceId getID();
例外:
[exec]Sample.h: Error: Syntax error in input(1).
[exec] make-3.79.1-p7: *** [sample_wrap.c] Error 1
Makefile(不完整的文件):
PACKAGE_DIR = src/java/com/test/jni
PACKAGE = com.test.jni
INCLUDES = -I/user/java/jdk-1.6.0_30/include/linux \
-I/user/java/jdk-1.6.0_30/include \
-I/user/src/include #Sample.h resides here
CFLAGS = -Wall -fpic $(INCLUDES) -O0 -g3
SFLAGS = -java $(INCLUDES) -package $(PACKAGE) -outdir $(PACKAGE_DIR)