Ott 182010
 

Eccoci ritrovati a questo nuovo appuntamento. Oggi vedremo come trasportare l’esempo di DLL creato nello scorso articolo per farlo funzionare sotto Linux. La prima parte riguarda chiaramente il trasporto della DLL vera e propria. Con mia sorpresa scopro che il progettino creato per windows utilizza opzioni di compilazione identiche su Linux, inoltre non essendoci librerie esterne da includere molto banalmente il progetto traportato così com’è funzionerà senza alcuna modifica. Vi lascio comunque i sorgenti già pronti che potete scaricare qui: DLL per linux e Windows (303). Io ho comunque apportato alcune modifiche, in particolare la compilazione non avviene, per Windows e per Linux, nella stessa cartella, ma ho indirizzato l’output nelle directory LxRelease, LxDebug, WxRelease e WxDebug in modo che si possa tranquillamente intercambiare il progetto fra i due sistemi operativi senza che ci siano sovrapposizioni di files e senza che si possa confondere una versione con un’altra. In questo modo potete ad esempio condividere il progetto con una cartella condivisa in rete, su un HD esterno, etc.

Il secondo passo riguarda la conversione del progetto che carica la DLL e ne utilizza le funzioni. In realtà non c’è nulla di nuovo rispetto al precedente articolo, abbiamo infatti creato lo stesso progetto sulle due piattaforme Linux e Windows e poi abbiamo fuso le opzioni di compilazione e linking in un unico progetto utilizzando 4 target di compilazione ossia i due release e debug per Windows ed i corrispettivi per Linux (per i singoli passi vi rimando comunque al precedente articolo). Rispetto alle scorse puntate ci sono alcune finezze in più come l’utilizzo degli header precompilati e di cartelle separate per gli output linux e windows. Ma per il resto non ho usato tecniche particolari per cui vi rimando direttamente ai listati che trovate qui: DLL multiplatform (274). Un’ultimo appunto: se rinominate le directory, in particolare quella contenente la DLL, ricordate di cambiare il percorso nele opzioni di compilazione, in particolare dovete fornire al linker il percorso modificato (Build Options->Linker settings) e cambiare anche il percorso dell’include nei listati che utilizzano la DLL. Un’altro appunto riguarda il fatto che ogni volta che modificate la dll dovete copiarla anche nella directory di destinazione dei vari progetti. L’alternativa potrebbe essere compilare direttamente in una directory di sistema, ma in questo caso perdete l’opportunità di avere una DLL ufficiale ed una “in sviluppo” in quanto la seconda andrebbe volta per volta a sostituire la prima. Si potrebbe alternativamente creare un piccolo script che esegue la copia per noi ogni volta che lo vogliamo. Se conoscete delle alternative più comode e funzionali non avete che da farcecelo sapere.