PDA

Visualizza la versione completa : [C++] Creare una DLL con cl.exe


peruzzo
24-01-2013, 11:27
Dovrei creare una DLL con cl.exe. I file da includere sono i seguenti:

NativeDemo.h


/* 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


/* 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:


Cl /LD NativeDemo.c

qui sotto trovate l'errore:


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:


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.

LeleFT
24-01-2013, 11:38
Ecco... C++ non ha nulla a che vedere con "Visual Basic e .NET Framework".

Sposto nell'area "Programmazione".


Ciao. :ciauz:

peruzzo
24-01-2013, 11:42
Ho provato anche questo:


Cl /LD
/I C:\glassfish3\jdk7\include\
/I C:\glassfish3\jdk7\include\win32
/I C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include
NativeDemo.c

Microsoft (R) C/C++ Optimizing Compiler versione 17.00.50727.1 per x64
Copyright (C) Microsoft Corporation. Tutti i diritti riservati.

cl : warning della riga di comando D9024 : tipo di file di origine 'Files' non r
iconosciuto, utilizzato file oggetto
cl : warning della riga di comando D9024 : tipo di file di origine '(x86)\Micros
oft' non riconosciuto, utilizzato file oggetto
cl : warning della riga di comando D9024 : tipo di file di origine 'Visual' non
riconosciuto, utilizzato file oggetto
cl : warning della riga di comando D9024 : tipo di file di origine 'Studio' non
riconosciuto, utilizzato file oggetto
cl : warning della riga di comando D9024 : tipo di file di origine '11.0\VC\incl
ude' non riconosciuto, utilizzato file oggetto
NativeDemo.c
C:\glassfish3\jdk7\include\jni.h(39) : fatal error C1083: Impossibile aprire il
file inclusione 'stdio.h': No such file or directory

ma niente...

:confused:

Chiedo scusa per la sezione...

MItaly
24-01-2013, 14:50
Originariamente inviato da peruzzo

Cl /LD /I C:\glassfish3\jdk7\include\ NativeDemo.c

ma comunque inefficaci.
Questa dovrebbe essere corretta, l'hai lanciata dal Prompt dei comandi di Visual Studio? Perché se la lanci da un prompt normale il compilatore non sa dove pescare gli header standard di sistema.

peruzzo
24-01-2013, 15:44
Originariamente inviato da MItaly
Questa dovrebbe essere corretta, l'hai lanciata dal Prompt dei comandi di Visual Studio? Perché se la lanci da un prompt normale il compilatore non sa dove pescare gli header standard di sistema.

Haaaa ecco perchè! Io la lancio da un prompt normale! :D
Come faccio ad accedere al prompt di Visual Studio? Se mi spieghi questo dovrei finalmente aver risolto questa campagna di sangue! :unz: :mem:

MItaly
24-01-2013, 15:50
Dovrebbe essere da qualche parte sotto Start->Tutti i programmi->Microsoft Visual Studio (versione).

peruzzo
24-01-2013, 17:40
Originariamente inviato da MItaly
Dovrebbe essere da qualche parte sotto Start->Tutti i programmi->Microsoft Visual Studio (versione).

Ma, solo per capirci, è un programma simile a cmd.exe senza icone dove si può solo scrivere codice? Quando per aprire un programma bastava la procedura "Start->Tutti i programmi->Microsoft Visual Studio (versione)" erano bei tempi adesso con windows 8 quelli della Microsoft si meriterebbero un calcio nel cul@, per non dire altro. L'unica cosa positiva è che il sistema è stabile e velocissimo ma ad usabilità fa pietà, una vera porcat@ coloss@le. (Mia idea per carità...)

oregon
24-01-2013, 19:40
(Doppio)

oregon
24-01-2013, 19:41
Originariamente inviato da peruzzo
Ma, solo per capirci, è un programma simile a cmd.exe

Non simile ma *è* cmd.exe con l'ambiente preimpostato per include/librerie di VS.


con windows 8 quelli della Microsoft si meriterebbero ...

Lascia perdere queste considerazioni ... Probabilmente MS ti direbbe che è una cosa insana cercare di integrare C/C++ nativo e Java e io condivido la cosa ...

peruzzo
25-01-2013, 11:37
Originariamente inviato da oregon
Non simile ma *è* cmd.exe con l'ambiente preimpostato per include/librerie di VS.



Lascia perdere queste considerazioni ... Probabilmente MS ti direbbe che è una cosa insana cercare di integrare C/C++ nativo e Java e io condivido la cosa ...

e da dove lo prendo questo benedetto cmd.exe su windows 8?!?! :sonno:

Loading