JNIEXPORT и JNICALL - это макросы, используемые для определения соглашения о вызовах и связях как функций JNI, так и реализаций собственных методов.
См. здесь раздел 12.4
Например, в моем jvm (Ubuntu 32bit) файл заголовка jni_md.h
содержит:
#define JNIEXPORT
#define JNIIMPORT
#define JNICALL
, который сделает вашу функцию похожей на: jbyteArray Java_ReadFile_loadFile (JNIEnv *, jobject, jstring);
В то время как win32 jni_md.h содержит:
#define JNIEXPORT __declspec(dllexport)
#define JNICALL __stdcall
Поскольку окна используют разные соглашения о вызовах, и ваша функция будет выглядеть так:
__declspec(dllexport) jbyteArray __stdcall Java_ReadFile_loadFile
(JNIEnv *, jobject, jstring);