2012-03-30 16 views
5

Sono preoccupato per l'affidabilità del compilatore MinGW per 64 bit, in alternativa al compilatore Visual C++.MinGW come compilatore GCC a 64 bit affidabile

Ad esempio, supponendo che il codice C++ si sviluppi e funzioni perfettamente sotto Linux utilizzando GCC 4.6.2, il MinGW corrispondente produrrà eseguibili/librerie altrettanto affidabili sotto Windows a 64 bit?

Cygwin è un'opzione migliore in termini di affidabilità? Non è il compilatore di Visual C++?

+0

A meno che non ci siano errori nella parte specifica di Windows delle librerie standard e di altro tipo, mi aspetto che il codice sia identico (eccetto per le "convenzioni di chiamata"). –

risposta

14

In primo luogo, alcune idee sbagliate:

  1. MinGW (.org) non fornisce una versione a 64 bit del suo tempo di esecuzione. MinGW-w64, oltre al CRT a 32 bit. Stanno anche lavorando al supporto ARM. E supporta varie API aggiuntive (Win32 e altri).

  2. Cygwin < -> MinGW-w64: Cygwin non utilizza MS CRT (msvcrt.dll). Inserisce invece un livello di compatibilità POSIX tra l'app Cygwin e le librerie del sistema operativo (kernel32.dll, ntdll.dll, ecc.), Ovvero cygwin1.dll.

alla questione poi ...

ho trovato i compilatori MinGW-W64 molto buono, e GCC 4.6 e superiori (in realtà, 4.5.1 e superiori) sono molto in grado di produrre una buona Codice a 64 bit per Windows. Ricorda che MinGW fornisce essenzialmente la stessa API C di msvcrt.dll, quindi vai su msdn.com per la documentazione (e assicurati di guardare la versione di MSVC++ 2003 della documentazione, alcune funzioni differiscono con i nuovi runtime), non penso che poiché è GCC, la documentazione di glibc si applica all'improvviso a Windows. Il tuo codice dovrà essere multipiattaforma. Si noti inoltre che sizeof(long)!=sizeof(T*) su Windows x64. Un errore comunemente riscontrato durante il porting del codice Windows * nix o x86 su x64 Windows.

+1

Grazie per i chiarimenti e la condivisione della tua esperienza con MinGW con GCC 4.5.1+ – Nick

+0

Correzione: Cygwin non usa affatto msvcrt, fornisce il proprio runtime C al suo posto. Aggiornamento: Cygwin ora ha una versione a 64 bit. – Yaakov

+0

@Yaakov Hai ragione. Post aggiornato – rubenvb

Problemi correlati