18 Marzo 2010
Irrlicht and NNFW 1.1.5 on Visual C++ 2008 Express Edition
Alla fine non e’ neppure stato cosi’ difficile. Come avevo accennato nel post di martedi’, lo step successivo al quale sarei dovuto sottopormi nel tentativo di portare il mio simulatore di MAVs (ed il corrispondente visualizzatore) su Windows riguardava il ricompilare Irrlicht in Visual Studio 2008. L’operazione e’ stata molto piu’ semplice del previsto. E’ bastato infatti scaricare i sorgenti (versione 1.7.1) dal sito ufficiale, fare le modifiche necessarie (nel mio caso ho apportato la correzione per il bug discusso qui, nonche’ disabilitato il supporto per le DirectX 8 e 9, che non mi erano necessarie), aprire in VC++ il progetto Irrlicht9.0.vcproj e compilarlo sia in modalita’ debug, sia in release.
Quello che non avevo preso in considerazione era il fatto che mi sarei anche dovuto ricompilare il Neural Network Framework, dato che i binari per Windows sembrano non funzionare. Parlando con Gianluca ho scoperto che nel repository SVN del progetto c’e’ una versione piu’ aggiornata dei sorgenti, che ho provveduto a scaricare (svn checkout https://svn.berlios.de/svnroot/repos/nnfw/trunk da *NIX/MacOS), configurare attraverso CMake (nella figura qui sotto il settaggio finale) e poi compilare con il solito Visual C++ 2008 Express Edition mediante il progetto appena creato. Ancora una volta sia in modalita’ debug che release, ed alternando tra una compilazione statica ed una dinamica della libreria (opzione modificabile assegnando o meno il valore shared alla variabile NNFW_CONFIG in CMake).
Una volta fatto tutto questo, una giornata ed un’infinita’ di bestemmie sono volate nel tentativo di compilare un’applicazione di esempio basata su Qt e NNFW. Per qualche motivo, la DLL delle NNFW sembrava essere corrotta. O, perlomeno, questo e’ cio’ che VC++ andava sostenendo al momento del linkaggio. Anche ricompilando il framework le cose non cambiavano di una virgola. Pazienza. Utilizzando il LIB, tutto compilava e linkava correttamente. La cosa comica e’ che quando lanciavo l’applicazione (anche in una versione ipersemplificata, che avrebbe semplicemente dovuto stampare alcuni caratteri a schermo e scrivere un file di testo sul disco), non succedeva assolutamente nulla. Nessun errore e terminazione con codice 0. Ma sia dell’output grafico che del file di testo nessuna traccia. Grazie all’aiuto di un collega sono poi riuscito a venire a capo di questa situazione prima che mi portasse alla follia. C’era una mancanza nel file progetto di Qmake che avevo utilizzato per generare il progetto VC++. Una mancanza che pare essere del tutto innocua su sistemi *NIX-like, ma che evidentemente e’ molto importante in Windows. Semplicemente mancava una riga (CONFIG += console) che specificasse il fatto che l’applicazione da creare era un’applicazione da console.
Ora che tutto sembra funzionare inizia il divertimento. In nottata si faranno le prime prove di compilazione del simulatore e si guardera’ un po’ che succede. Fingers crossed.
Nota a margine. Se volete includere le NNFW in un file progetto CMake, apparentemente quello che segue e’ il codice da utilizzare.
FIND_PACKAGE( NNFW )
ADD_DEFINITIONS( ${NNFW_DEFINITIONS} )
INCLUDE_DIRECTORIES( ${NNFW_INCLUDE_DIRS} )
LINK_DIRECTORIES( ${NNFW_LINK_DIRS} )
SET_TARGET_PROPERTIES( evoicub PROPERTIES COMPILE_FLAGS “${LARAL_COMPILE_FLAGS} ${WORLDSIM_COMPILE_FLAGS} ${NNFW_COMPILE_FLAGS}” )
SET_TARGET_PROPERTIES( evoicub PROPERTIES LINK_FLAGS “${LARAL_LINK_FLAGS} ${WORLDSIM_LINK_FLAGS} ${NNFW_LINK_FLAGS}” )



Comments(1)











