Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    [JNI] Modificare file c++ esistente e renderlo .so

    Salve,

    sono nuovo del forum. Vi spiego il mio problema. Ho tutto il sorgente di un programma sperimentale scritto da alcuni prof ricercatori della mia università. Devo praticamente usare Java native interface per creare un metodo java che mi richiami il main di questo programma. Praticamente devo rendere il programma che già esiste una libraria .so. Ora, non ho problemi a creare librerie .so nuove e a richiamarle da java tramite jni, ma come rendo un programma già esistente una .so? Cioè, non riesco a capire dove inserire la classica intestazione della libreria
    JNIEXPORT return_type JNICALL ... per intenderci. Spero riusciate ad aiutarmi.

    grazie mille in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    non è che sia chiarissimo cosa c'entri con java questo (penso niente).
    Il punto è che devi ricompilare il tuo programma chiedendo in output una libreria e non un eseguibile, io non ci vedo alternative
    RTFM Read That F*** Manual!!!

  3. #3
    Forse non sono stato chiaro.

    Java centra e come essendo Java Native Interface.

    Come ho detto in precedenza mi serve inserire la funzione JNIEXPORT return_type JNICALL ...... che poi viene compilata come .so. Il problema è che questo so farlo scrivendo un file con questo funzione e compilando il tutto. Ora non capisco come farlo con un programma già scritto bello e pronto che devo rendere una libreria. Spero che qualcuno che conosca JNI mi risponda.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da Donasnake
    Forse non sono stato chiaro.

    Java centra e come essendo Java Native Interface.

    Come ho detto in precedenza mi serve inserire la funzione JNIEXPORT return_type JNICALL ...... che poi viene compilata come .so. Il problema è che questo so farlo scrivendo un file con questo funzione e compilando il tutto. Ora non capisco come farlo con un programma già scritto bello e pronto che devo rendere una libreria. Spero che qualcuno che conosca JNI mi risponda.
    Forse non ti è chiaro il punto di partenza: se io ho un eseguibile, questo non me lo trasformo in libreria e questo non c'entra niente con JNI.
    Se hai l'eseguibile fai la chiamata all'eseguibile senza passare per JNI, quello è già completo.

    Leggi un po' qui
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Se hai l'eseguibile fai la chiamata all'eseguibile senza passare per JNI, quello è già completo. come dice il mio capo: dalla salsiccia non torni al maiale, tu hai la salsiccia e quella devi usare.
    Tu hai l'eseguibile, da questo non torni indietro per avere il sorgente da integrare con JNI.
    RTFM Read That F*** Manual!!!

  6. #6
    Continuo a non farmi capire.
    Non è un eseguibile, è un programma interamente scritto in c++ che ho bisogno di richiamare da un programma Java come libreria. Non ho mai scritto di avere l'eseguibile mi pare.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: [JNI] Modificare file c++ esistente e renderlo .so

    Originariamente inviato da Donasnake
    Salve,

    sono nuovo del forum. Vi spiego il mio problema. Ho tutto il sorgente di un programma sperimentale scritto da alcuni prof ricercatori della mia università. Devo praticamente usare Java native interface per creare un metodo java che mi richiami il main di questo programma. Praticamente devo rendere il programma che già esiste una libraria .so. Ora, non ho problemi a creare librerie .so nuove e a richiamarle da java tramite jni, ma come rendo un programma già esistente una .so? Cioè, non riesco a capire dove inserire la classica intestazione della libreria
    JNIEXPORT return_type JNICALL ... per intenderci. Spero riusciate ad aiutarmi.

    grazie mille in anticipo
    te l'ho messa in evidenza.

    Il principio è sempre quello, il tuo main non è altro che una funzione particolare, se proprio ti crea problemi passalo a funzione che chiami che so functionMain (tieni conto dei parametri) e usa quella con lo stesso principio con cui chiami altre funzioni.
    Se sei il tuo programma, dentro il main chiama l'altra funzione, se sei da JNI chiama direttamente l'altra funzione.
    Il ragionamento non cambia
    RTFM Read That F*** Manual!!!

  8. #8
    Non è che mi sia molto chiaro...

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    il main è una funzione come un'altra, su questo ci sei? la usi solo come punto di ingresso nel programma.

    se tu tutto quello che fai nel main lo vai a mettere dentro un'altra funzione (anche dentro un'altro file se ti crea problemi), cambia qualcosa? No.
    Ovviamente in questo caso devi ricordarti di portarti dietro i parametri (mica ce li perdiamo). Questa è una modifica del tutto trasparente per l'utente, ma che a te consente di trattare il tuo programma come fosse una funzione che già sai trattare con JNI. E' un girarci intorno.
    RTFM Read That F*** Manual!!!

  10. #10
    Ok! Ci avevo già provato! Anche perchè il programma è scritto da più pezzi (ad esempio nel file c++ doce è contenuto il main ci sono altre funzioni esterne e poi ci sono tutta una ltra marea di file c++ e .hpp che vengono utilizzati). Comunque quindi se tolgo il main e ricopio tutto nella funzione i parametri come li passo? Perche quando questo benedetto programma viene lanciato
    la sintassi è (comando) (parametri) e tra i parametri del main ci sono int argc e char* argv[]. Onestamente non capisco quell'int a che parametro si riferisca.

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.