Ответ 1
следующее решение должно помочь устранить эту проблему:
Создание Java-приложений на основе JNI в Linux и Cygwin
Моды Java для Cygwin Builds
В Cygwin библиотека JNI (Java Native Interface), которую мы создали, называется JNILibrary, не создает, потому что gcc не знает о типе "__int64". Youll знает, что вы попали в проблему, если вы видите что-то вроде этого:
Создание класса и заголовка JNILibrary.... В файле, включенном в /cygdrive/c/j 2sdk1.4.2_12/include/jni.h:27, от JNICrunch-common.h: 25,
от JNICrunchHWInfo.c: 31:
/cygdrive/c/j2sdk1.4.2_12/include/win32/jni_md.h:16: ошибка: проанализировать ошибку перед "jlong". /cygdrive/c/j 2sdk1.4.2_12/include/win32/jni_md.h:16: предупреждение: определение данных не имеет типа или класса храненияЕсли вы нажмете это, вам нужно отредактировать /cygdrive/c/j 2sdk1.4.2_12/include/win32/jni_md.h и изменить следующие строки:
typedef long jint; typedef __int64 jlong; typedef signed char jbyte;
в
typedef long jint; #ifdef __GNUC__ typedef long long jlong; #else typedef __int64 jlong; #endif typedef signed char jbyte;
Вы также можете попробовать следующее:
-
Добавить
#include <stdint.h>
до#include <jni.h>
в заголовке... или -
Добавьте флаг java-компилятора:
-D__int64=int64_t