Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C - JAVA] Creazione dll da caricare in JAVA

    Qualcuno sa dirmi che compilatore devo utilizzare per creare la dll relativa ad un metodo nativo C da implementare in Java ?

    premessa

    ho dichiarato il metoto java come native
    ho creato il file .h tramite JNI
    ho scritto la funzione in C

    mi manca da compilare il codice C per creare la dll da caricare in java

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao.
    Quando ho utilizzato i metodi nativi in Java ho utilizzato il compilatore della microsoft se non erro; cmq penso sia buono anche il borland c++.
    Spero ti sia d'aiuto ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    Per caso ti riferisci a Microsoft Visual c++ ?
    Se si mi sapresti dire dove posso scaricarlo ?
    é free o no ?
    Mi andrebbe bene quello che gira sotto dos sempre della microsoft

    Grazie comunque

  4. #4
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Si il software è proprio quello solo che non so dove puoi trovarlo in quanto a me lo diedero all'università e, essendovi un crack, mi sa che non è free.
    Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  5. #5
    SONO RIUSCITO A RIMEDIARE VISUAL C++

    PERO' HO IL SEGUENTE PROBLEMA

    Ho visto un esempio di creazione di un metodo nativo
    Questa é la classe
    public class NativeDemo {
    int i;
    public static void main(String args[]) {
    NativeDemo ob = new NativeDemo();

    ob.i = 10;
    System.out.println("This is ob.i before the native method:" +
    ob.i);
    ob.test(); // call a native method
    System.out.println("This is ob.i after the native method:" +
    ob.i);
    }
    // declare native method
    public native void test() ;

    // load DLL that contains static method
    static {
    System.loadLibrary("NativeDemo");
    }
    }


    Ho compilato la classe

    Poi ho creato NativeDemo.h così

    javah -jni NativeDemo

    Il codice NativeDemo.c é il seguente

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

    Lo compilo con Visual C++ e mi da il seguente errore che non riesco a
    trovare

    Linking...
    Creating library Debug/NativeDemo.lib and object Debug/NativeDemo.exp
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/NativeDemo.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.

    NativeDemo.exe - 2 error(s), 0 warning(s)



    Ho messo jni.h e NativeDemo.h nella cartella include di Visual

    Aiuto !!

  6. #6
    Forza ragazzi un Aiuto :quipy: !!

  7. #7
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao.. Ora.. è da un bel po' che non uso JNI cmq... mi sembra che il tuo codice sia fatto bene,cmq entro il fine settimana vedo di recuperare qualcosa della mia tesi in maniera che ti possa postare qualche esempio, se ti va bene ( non posso prima perchè sono giorni in cui non riesco ad avere nemmeno il tempo di radermi... ). Fammi sapere
    ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  8. #8
    Ok Grazie !!!

    Intanto provo a sbatterci la testa

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.