2012-03-30 14 views
5

Me preocupa la confiabilidad del compilador MinGW para 64 bits, como alternativa al compilador de Visual C++.MinGW como compilador GCC confiable de 64 bits

Por ejemplo, suponiendo que el código C++ se crea y se ejecuta perfectamente en Linux utilizando GCC 4.6.2, ¿el MinGW correspondiente producirá ejecutables/bibliotecas similarmente confiables en Windows de 64 bits?

¿Es Cygwin una mejor opción en términos de confiabilidad? ¿Tampoco es para el compilador de Visual C++?

+0

A menos que haya errores en la parte específica de Windows del estándar y en otras bibliotecas, espero que el código sea idéntico (excepto para las "convenciones de llamada"). –

Respuesta

14

primer lugar, algunos conceptos erróneos:

  1. MinGW (.org) no proporciona una versión de 64 bits de su tiempo de ejecución. MinGW-w64 sí, además de su CRT de 32 bits. También están trabajando en el soporte de ARM. Y admite varias API adicionales (Win32 y otros).

  2. Cygwin < -> MinGW-w64: Cygwin no utiliza el MS CRT (msvcrt.dll). En su lugar, inserta una capa de compatibilidad POSIX entre su aplicación Cygwin y las bibliotecas del sistema operativo del sistema (kernel32.dll, ntdll.dll, etc.), concretamente cygwin1.dll.

En la pregunta entonces ...

que han encontrado los compiladores MinGW-W64 muy bueno, y GCC 4.6 y superiores (en realidad, 4.5.1 y superiores) son muy capaces de producir buena Código de 64 bits para Windows. Recuerde que MinGW proporciona esencialmente la misma API de C que msvcrt.dll, así que vaya a msdn.com para obtener documentación (y asegúrese de consultar la versión de la documentación de "MSVC++ 2003", algunas funciones difieren con los tiempos de ejecución más recientes), no lo haga Creo que debido a que es GCC, la documentación de glibc de repente se aplica a Windows. Tu código tendrá que ser multiplataforma. También tenga en cuenta que sizeof(long)!=sizeof(T*) en x64 Windows. Un error común al portar * nix o x86 código de Windows a x64 Windows.

+1

Gracias por las aclaraciones y por compartir su experiencia con MinGW con GCC 4.5.1+ – Nick

+0

Corrección: Cygwin no usa msvcrt en absoluto, sino que proporciona su propio tiempo de ejecución de C en su lugar. Actualización: Cygwin ahora tiene una versión de 64 bits. – Yaakov

+0

@Yaakov Estás en lo correcto. Publicación actualizada. – rubenvb

Cuestiones relacionadas