Dovrei creare una DLL con cl.exe. I file da includere sono i seguenti:
NativeDemo.h
codice:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class NativeDemo */
#ifndef _Included_NativeDemo
#define _Included_NativeDemo
#ifdef _ _cplusplus
extern "C" {
#endif
/*
* Class: NativeDemo
* Method: test
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_NativeDemo_test
(JNIEnv *, jobject);
#ifdef _ _cplusplus
}
#endif
#endif
NativeDemo.c
codice:
/* This file contains the C version of the
test() method.
*/
#include <jni.h>
#include "NativeDemo.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_NativeDemo_test(JNIEnv *env, jobject obj)
{
jclass cls;
jfieldID fid;
jint i;
printf("Starting the native method.\n");
cls = (*env)->GetObjectClass(env, obj);
fid = (*env)->GetFieldID(env, cls, "i", "I");
if(fid == 0) {
printf("Could not get field id.\n");
return;
}
i = (*env)->GetIntField(env, obj, fid);
printf("i = %d\n", i);
(*env)->SetIntField(env, obj, fid, 2*i);
printf("Ending the native method.\n");
}
e la riga di codice che non funziona è la seguente:
codice:
Cl /LD NativeDemo.c
qui sotto trovate l'errore:
codice:
Microsoft (R) C/C++ Optimizing Compiler versione 17.00.50727.1 per x64
Copyright (C) Microsoft Corporation. Tutti i diritti riservati.
NativeDemo.c
NativeDemo.c(5) : fatal error C1034: jni.h: nessun percorso impostato per i file di inclusione
Su questo forum mi sono state consigliate altre soluzioni come:
codice:
Cl /LD /I C:\glassfish3\jdk7\include\ NativeDemo.c
ma comunque inefficaci. Credo che mi resti da capire come specificare in maniera corretta il percorso verso jni.h e jni_md.h.