Creare una dll con un programma per C++

di
Anonimizzato11068
il
4 risposte

Creare una dll con un programma per C++

Sto leggendo un libro di java e c'è un capitolo che mi fa davvero impazzire "I metodi Nativi". Il mio problema è "semplicissimo", devo creare una DLL!

Ho un file con nome NativeDemo.h e un file NativeDemo.c, il mio manuale dice che in teoria con questi due file dovrei riuscire a ottenere questa benedetta DLL.

Vi riporto il contenuto dei file, mi date una mano per favore?

P.S.: Non conosco il C++...

- - - - - - - - - - - - - - - - - - - - - - - - -

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"); 
}

4 Risposte

  • Re: Creare una dll con un programma per C++

    I file header che proponi non sono standard (vedi jni.h) quindi ti serve uno che usi le due tecnologie.
  • Re: Creare una dll con un programma per C++

    Ovvero?

    Sul manuale c'é scritto:
    Dopo la creazione di NatievDemo.c è necessario compilarlo e creare un file DLL. Per farlo utilizzando il compilatore Microsoft C/C++ utilizzare la riga di comando mostrata di seguito (può essere necessario specificare il percorso verso jni.h e il relativo file subordinato jni_md.h).

    Cl /LD NativeDemo.c

    Il comando genera un file dal nome NativeDemo.dll. Al termine è possibile eseguire il programma Java, che genera l'output mostrato di seguito:
    Letto e riletto milioni di volte e ho anche provato a seguire questa guida:
    http://www.youtube.com/watch?v=Ki04XdNsNZ
    ma Dev-C++ mi da questo errore: “g++.exe ha smesso di funzionare”
  • Re: Creare una dll con un programma per C++

    Mi sembra che ti stiano seguendo (già da un po' e anche su questo argomento) su http://forum.html.it/forum/showthread.php?s=&postid=13792528 ...
  • Re: Creare una dll con un programma per C++

    Allora potete continuare nell'altro forum, qui non é ammesso il crossposting. Quindi chiudo.
Devi accedere o registrarti per scrivere nel forum
4 risposte