我担心MinGW编译器对64位的可靠性,作为Visual C ++编译器的替代品。
例如,假设C ++代码在Linux下使用GCC 4.6.2构建并完美运行,相应的MinGW是否会在64位Windows下生成类似可靠的可执行文件/库?
Cygwin在可靠性方面是更好的选择吗?既不是Visual C ++编译器吗?
答案 0 :(得分:14)
首先,一些误解:
MinGW(.org)不提供64位版本的运行时。 MinGW-w64除了32位CRT之外还有。他们还致力于ARM支持。并支持各种其他API(Win32和其他)。
Cygwin< - > MinGW-w64:Cygwin不使用MS CRT(msvcrt.dll)。它会在您的Cygwin应用程序和系统的OS库(kernel32.dll,ntdll.dll等)之间插入POSIX兼容层,即cygwin1.dll。
接下来的问题......
我发现MinGW-w64编译器非常好,而GCC 4.6及以上版本(实际上,4.5.1及以上版本)非常能够为Windows生成良好的64位代码。请记住,MinGW提供与msvcrt.dll基本相同的C API,因此请访问msdn.com获取文档(并确保查看文档的“MSVC ++ 2003”版本,某些函数与较新的运行时不同),不要认为因为它是GCC,所以glibc文档突然适用于Windows。您的代码必须是跨平台的。另请注意x64 Windows上的sizeof(long)!=sizeof(T*)
。将* nix或x86 Windows代码移植到x64 Windows时常见的错误。