dll-gcc

.lib - .a - .dll

Nello sviluppo con il gcc sotto Windows si incontra spesso un problema: il formato delle librerie linkabili è il ".a" mentre nomalmente in ambiente windows vengono forniti file ".lib" che contengono la parte statica delle librerie da linkare al nostro codice. Questo documento illustra come estrarre dalla dll il .a necessario alla compilazione.

Tool necessari

Saranno necessari:

Non è necessario disporre della libreria statica (.lib).

Procedimento

Creare una nuova directory e copiarvi la dll, portarsi nella nuova directory con la shell Msys.E' necessario quindi creare un file .def contenente le definizioni della dll. Il contenuto del file si estrae dalla libreria con il comando:

pexports nome.dll | sed "s/^_//" >  nome.def
Disponendo adesso del file .def è possibile creare la libreria .a con il comando:
dlltool -d nome.def -l nome.a -k
I file .h e .a vanno quindi copiati nei path dove il compilatore possa trovarli, ad esempio C:/DevCpp/include e C:/DevCpp/lib. La dll va posta insieme all'eseguibile oppure in C:/windows/system32.

Nota

Pexport estrae tutti i nomi non decorati (senza @xxx). Le decorazioni andranno quindi aggiunte a mano (!) nel .def sulla base degli errori restituiti dal compilatore in fase di utilizzo del .a. Dopo aver modificato il .def è necessario rilanciare il secondo comando (dlltool..)

matteolucarelli.altervista.org
©opyright info