giovedì 23 settembre 2010

Qt: mingw32\bin\ld.exe: cannot find -lqtmaind

Problema: compilando un progetto con C++/Qt alla fine compare il seguente messaggio di errore:

    mingw32\bin\ld.exe: cannot find -lqtmaind


Soluzione: se siete nuovi alle librerie grafiche Qt, probabilmente non sapete che esistono due tipi di compilazione: Debug e Release.

La differenza principale fra le due è che la modalità Debug include alcune informazioni supplementari che permettono al debugger di tenere traccia del comportamento dell'applicazione a runtime, permettendo di capire gli errori di eventuali crash.

La Release mode non si occupa di questo, perciò la compilazione è più veloce, il codice è ottimizzato, e l'eseguibile finale ha una dimensione nettamente minore rispetto alla Debug mode.

I nomi difatti rispecchiano le loro funzioni: la compilazione Debug dovrebbe servire in fase di sviluppo del progetto; la Release serve a compilare il programma finale, poco prima della distribuzione.

E cosa centra l'errore con tutto questo?

Le librerie Qt vengono distribuite compilate in Release mode (anche per ridurre il peso da scaricare), di conseguenza non sono adatte alla compilazione Debug di default. Se volete usare questa modalità dovete andare su:

    Start > Tutti i programmi > cartella Qt

e cercare una voce simile a "Build Debug Libraries". Vi avviso che l'operazione è piuttosto lunga, anche di qualche ora.

Perciò se non avete voglia di aspettare, vi consiglio di compilare sempre in Release mode, settandola sotto la tab "Projects" di Qt Creator, oppure aggiungendo la specifica CONFIG+=release nello step QMake.

Nessun commento:

Posta un commento