Я пытаюсь скомпилировать родную библиотеку, чтобы использовать ее из java (с JNI). Я следовал за этот учебник: https://cnd.netbeans.org/docs/jni/beginning-jni-win.htmlJNI не может обнаружить __int64 на NetBeans
Ошибка
При попытке компиляции, я эту ошибку (см линия 4):
[...]
In file included from ../../Progra~2/Java/jdk1.8.0_91/include/jni.h:45:0,
from HelloWorldNative.h:3,
from HelloWorldNative.c:6:
../../Progra~2/Java/jdk1.8.0_91/include/win32/jni_md.h:34:9: error: unknown type name '__int64'
typedef __int64 jlong;
^
nbproject/Makefile-Debug.mk:66: recipe for target 'build/Debug/Cygwin-Windows/HelloWorldNative.o' failed
[...]
я могу решить эту ошибку добавив typedef long long __int64
перед #include <jni.h>
, но я предполагаю, что есть что-то, что я делаю неправильно.
Код
Вот код:
Заголовочный файл:
/* DO NOT EDIT THIS FILE - it is machine generated */
typedef long long __int64; // <============ Why do I need to do this?
#include <jni.h>
/* Header for class helloworld_Main */
#ifndef _Included_helloworld_Main
#define _Included_helloworld_Main
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: helloworld_Main
* Method: nativePrint
* Signature:()V
*/
JNIEXPORT void JNICALL Java_helloworld_Main_nativePrint
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
ИСТОЧНИК ФАЙЛА:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
#include "HelloWorldNative.h"
JNIEXPORT void JNICALL Java_helloworld_Main_nativePrint
(JNIEnv *env, jobject _this){
}
Я пытался добавить '#include' до '#include ', но он не работает. –
Dan
@ Дай видеть мое редактирование, действительно то, что вы сделали изначально, было бы приемлемым решением - по крайней мере, оракул предлагает это сделать. – marcinj