2012-07-27 19 views
11

Ho creato un'applicazione in Qt Creator che esegue l'elaborazione di immagini con CImg. Funziona bene quando lo eseguo dall'interno di IDE, ma se provo a lanciarlo dalla sua directory, lancia il seguente errore.QT Release build DLL entry point error error

The procedure entry point [email protected]@[email protected]$$QAV0AAZ could not be located 
in the dynamic link library QtCore4.dll 

Tutto punta a disporre di più versioni delle DLL installate. Ho trovato il mio IDX Xilinx utilizza le librerie Qt, ma le DLL in questione sono la stessa versione. Non sono un tipo di software, e in perdita qui.

risposta

14

Anche se la versione della libreria è la stessa, potrebbe non essere compatibile. Ad esempio sono stati compilati con diverse configurazioni, come con o senza supporto STL, OpenGL, driver SQL ...

Il modo più semplice per risolvere il problema dovrebbe essere quello di spostare il percorso di Qt SDK all'inizio della variabile di ambiente PATH. In questo modo ogni volta che si esegue un eseguibile che richiede librerie Qt, verrà caricato quello spedito con SDK (i primi trovati in PATH), a meno che non ci siano già copie di QtCore4.dll, QtGui4.dll ... nella directory dell'eseguibile. Per questo motivo se ridistribuisci la tua applicazione potresti anche dover spedire le librerie nella sua directory.

Un'altra opzione è il collegamento statico, ma ti verrà richiesto di fornire il codice sorgente sotto la licenza (L) GPL.

+0

Nella directory sono presenti copie di QtCore4.dll e QtGui4.dll. Questa è l'applicazione che dovrebbe essere necessaria. Anche il collegamento statico non funziona. Sono quasi pronto a buttarlo all'ingegnere e dirgli di occuparmi della versione da linea di comando. –

+0

@Matt Vuoi dire che hai messo QtCore4.dll nella directory dell'applicazione e mostri ancora quel messaggio? Probabilmente è la DLL sbagliata. Forse hai preso la DLL dalla directory di QtCreator, ma dovresti prenderla da quella di SDK, dato che sono _non_ uguali (e la tua applicazione è collegata a quest'ultima). – Claudio

+0

Ran Dipendente Walker e ricopiato le DLL nella directory. Non sono sicuro di quale DLL ho usato in origine, ma ora funziona. –

-1

Il collegamento statico delle librerie elimina il problema.

+6

Ma le forze di rilasciare sotto (L) GPL. – Claudio

0

Utilizzare DependencyWalker per elencare da dove è stato caricato qtcore4.dll. Ho avuto lo stesso problema - DependencyWalker mi ha mostrato che qtcore4.dll è stato caricato da c: \ windows \ system32 - ma non c'era qtcore4.dll in questa cartella.

Attenzione: su Windows 7 64 bit c: \ windows \ SysWOW64 è "mappato" come c: \ windows \ system32. E in questa cartella ho trovato la DLL - ho rinominato la DLL e il problema è stato risolto.

Vai a questa risposta qui: Qt fresh Gui application crashes on startup, faulting at QtCore4.dll