2013-03-15 13 views
7

È possibile creare un HelloWorld.lib e caricarlo in un'applicazione Java utilizzando JNI? O funziona solo con le librerie condivise?È possibile collegare una libreria statica a Java tramite JNI?

Impossibile trovare una risposta chiara sulla documentazione JNI, non c'è alcun riferimento a "libreria statica".

+0

check http://stackoverflow.com/questions/2349093/static-libraries-and-jni – BackSlash

+0

@Harlandraka ho visto la domanda prima di pubblicare, ma il collegamento è morto. Inoltre, ora è direttamente domanda-risposta invece di domanda-commento. – quimnuss

risposta

3

Deve essere una libreria dinamica. Fortunatamente, puoi costruire una libreria dinamica da una libreria statica.

+0

Proprio come pensavo ... Quindi suppongo che dovrò ricompilare la libreria statica usando -fPIC flag, dannazione. – quimnuss

+0

Oppure avvolgerlo in una libreria dinamica/condivisa, evitando la necessità di ricompilare. –

+0

È possibile incollare un collegamento, come è possibile ottenere una libreria condivisa da una libreria statica che non è stata compilata con fPIC? – quimnuss

1

Per caricare una libreria in fase di esecuzione deve essere una dll (Windows). Se hai una libreria statica (lib) e devi usarla tramite JNI devi creare una DLL wrapper

0

Dovresti collegarlo alla JVM, e non hai un modo per farlo. Ecco perché JNI è definito con librerie condivise, non statiche.

Problemi correlati