2011-03-28 7 views
3

JNI 튜토리얼을 거치며 생성 된 헤더 파일에서 아래 라인을 보았습니다.생성 된 JNI 헤더 파일을 이해하는 데 도움이 필요합니다.

JNIEXPORT jbyteArray JNICALL Java_ReadFile_loadFile 
(JNIEnv *, jobject, jstring); 

내가 의 의미 jbyteArray, JNIEnv의, 하는 jobject을 이해할 수 및 .These이와 C 프로그램에서 정보를 전달하는 데 필요한 jstring으로 . 그러나 나는 왜 이해할 수 없었다 JNIEXPORTJNICALL가 사용됩니다. 그리고 C 프로그램 (function, Structure, Enum -이 질문이 매우 사소한 경우 후회합니다) 에서처럼 무엇입니까? 어떤 도움을 주셔서 감사합니다.

답변

4

JNIEXPORT와 JNICALL는 호출 및 연결 모두 JNI 함수의 컨벤션 네이티브 메소드 구현을 지정하는 을 사용하는 매크로입니다.

here 섹션 12.4

예를 들어, 내 JVM (우분투 32 비트)에, 헤더 파일 jni_md.h에 포함 된 항목 : jbyteArray Java_ReadFile_loadFile : 같은 함수 모양을 만들 것입니다

#define JNIEXPORT 
#define JNIIMPORT 
#define JNICALL 

(JNIEnv *, jobject, jstring);

이는 Win32 jni_md.h이 포함되어 있지만 : 창은 서로 다른 호출 규칙을 사용하고 기능이 모양을

#define JNIEXPORT __declspec(dllexport) 
#define JNICALL __stdcall 

이후 : 응답을

__declspec(dllexport) jbyteArray __stdcall Java_ReadFile_loadFile 
(JNIEnv *, jobject, jstring); 
+0

고맙습니다 .. – hnm

관련 문제