questo è molto confusa. Ho passato molto tempo a leggere post su questo in pila, ecc. Ancora confusi.Compatibilità * .dll * .a * lib * .def tra VisualStudio e gcc
Sto usando Qt e C++ per la codifica. In Qt, sto usando l'opzione gcc per un compilatore.
Il problema è che molte librerie di terze parti che ho provato non sembrano funzionare.
Sono nuovo a file .dll, .a, .lib, .def e schemi di libreria.
Domanda 1:
Nella mia limitata esperienza (ho provato 7 o 9 librerie finora), i fornitori di biblioteche raramente ti dicono se la DLL è stata fatta con VisualStudio o gcc. Ciò aggiunge molta confusione. Non rendono quasi mai chiaro a quale compilatore la libreria è compatibile. Quindi apprezzerei alcuni consigli di vita reale su come affrontare questo incubo. Quasi tutte le librerie che ho provato sono progetti OpenSource. Non chiamerò i nomi qui, ma questi sono progetti ben noti. Sono sicuro che il problema è la mia mancanza di conoscenza ...
MinGW e gcc mondo
Question2:
Per quanto posso dire, dinamico C++ librerie per MinGW gcc universo richiedono questi, giusto ?
* .h
* .dll
* .a
Domanda 3:
Purtroppo, il file .a è spesso manca e la biblioteca non funziona. Questo è molto confuso. Se manca il file .a, sono sfortunato?
Domanda 4:
Posso generare il file .a per MinGW/GCC se la * .dll è stata fatta con gcc?
Domanda 5: Posso generare il file .a per MinGW/gcc se il file * .dll è stato creato con VisualStudio?
Domanda 6:
È possibile che un * .dll (realizzato con MinGW/gcc) sia troppo vecchio e non più compatibile con MinGW/gcc più recenti?
Domanda 7:
I progetti Qt che utilizzano MinGW/gcc non necessitano mai di file * .lib, giusto? Questa è solo una cosa di VisualStudio, giusto?
Domanda 8:
Non ho bisogno di un file * .def per usare un file * .dll in un progetto Qt usando MinGW/gcc, giusto?
VisualStudio mondo
Domanda 9:
Per quanto posso dire, dinamico C++ librerie per VisualStudio richiedono questi:
* .h
* .dll
* .lib
Giusto? Ancora, il problema è che il file * .lib è quasi sempre mancante. Inoltre, nessuna chiara istruzione su quale compilatore è compatibile con la libreria. Quindi, come posso sapere che è solo per VisualStudio o no?
Domanda 10:
Se il file .lib è mancante, sono sfortunato?
Domanda 11:
È possibile generare il file .lib per VisualStudio se * .dll è stato creato con VisualStudio? Come?
Domanda 12:
Posso generare il file .lib per VisualStudio se * .dll è stato creato con MinGW/gcc? Come?
Domanda 13:
È possibile che un * .dll (realizzato con VisualStudio) sia troppo vecchio e non sia più compatibile con VisualStudio più recente?
Domanda 14:
Se in QtCreator seleziono il compilatore VisualStudio, è compatibile al 100% con le librerie dinamiche compilate con REAL VisualStudio da qualcun altro? Credo che l'opzione del compilatore VisualStudio in Qt Creator sia un compilatore falso di VisualStudio.
Domanda 15:
Se in QtCreator seleziono il compilatore MinGW/gcc, posso utilizzare le librerie dinamiche Qt compilate con REAL VisualStudio da qualcun altro?
Domanda 16:
Non ho bisogno di un file * .def per utilizzare un file * .dll in un progetto Qt utilizzando MinGW/gcc, giusto?
Domanda 17: Posso convertire un * lib (che funziona con un file * .dll e * .h) fatto con REAL VisualStudio in un file * .a in modo da poter usare il file * .a con il non modificato * .dll e * .h file in un progetto gt Qt?
Credo che questa complessità sia peculiare di Windows. Non lo avrai quando usi Qt su Linux! –
Potresti voler suddividere questo in più domande (in particolare la varietà "posso generare X se ho Y") ... probabilmente molte persone possono rispondere ad alcune di queste domande e se le hai poste singolarmente (dato che sono carine non correlate a Qt) sul collegamento di Windows, potresti ottenere risposte più veloci. Detto questo, la risposta più breve che posso darti è * non usare MinGW se non devi * - VisualStudio è la norma supportata sulla piattaforma e avrai una migliore esperienza nel lungo periodo (se un po 'di dolore a breve termine con le dipendenze della libreria open source). –
-1: per fare 16 domande in una volta. –