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.
Saranno necessari:
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.defDisponendo adesso del file .def è possibile creare la libreria .a con il comando:
dlltool -d nome.def -l nome.a -kI 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.
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..)