Domanda

Sto cercando di compilare una libreria Java che utilizza JNI. Quando avvio il programma, vedo un incidente con un'UnsatisfiedLinkError, che dice che un particolare metodo non è stato trovato nella DLL.

A ben vedere, ho scoperto che g ++, che io uso per la compilazione e il collegamento, straziati i miei nomi di metodo con l'aggiunta di suffissi come "@ 8" o "@ 16" per i nomi dei metodi. Qualcuno sa le opzioni del compilatore corrette per disattivare il nome storpiatura? Grazie in anticipo!

Modifica :. Sto usando MinGW attraverso Eclipse CDT + plug-in

È stato utile?

Soluzione

Per JNI chiama a lavorare con le DLL di Windows compilati con GCC è necessario aggiungere un parametro di add-stdcall-alias di GCC su fase di collegamento:

gcc -Wl,--add-stdcall-alias

a cui si aggiungeranno i nomi delle funzioni corrette per la DLL e quindi abilitare le chiamate tramite JNI.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top