2012-03-30 13 views
5

Martwię się o niezawodność kompilatora MinGW dla wersji 64-bitowej, jako alternatywy dla kompilatora Visual C++.MinGW jako niezawodny 64-bitowy kompilator GCC

Na przykład, zakładając, że kod C++ kompiluje się i działa idealnie pod Linuksem przy użyciu GCC 4.6.2, czy odpowiedni MinGW będzie produkował podobnie niezawodne pliki wykonywalne/biblioteki w 64-bitowym systemie Windows?

Czy Cygwin jest lepszą opcją pod względem niezawodności? Czy nie jest kompilatorem Visual C++?

+0

Jeśli nie ma błędów w specyficznej dla Windows części standardu i innych bibliotek, oczekiwałbym, że kod będzie identyczny (z wyjątkiem "konwencji wywoływania"). –

Odpowiedz

14

pierwsze, niektóre nieporozumienia:

  1. MinGW (.org) nie zapewnia 64-bitową wersję jej wykonywania. MinGW-w64 robi, oprócz ich 32-bitowego CRT. Pracują również nad wsparciem ARM. I obsługuje różne dodatkowe API (Win32 i inne).

  2. Cygwin < -> MinGW-w64: Cygwin nie używa MS CRT (msvcrt.dll). Zamiast tego wstawia warstwę zgodności POSIX pomiędzy aplikacją Cygwin a systemowymi bibliotekami systemu operacyjnego (kernel32.dll, ntdll.dll itp.), A mianowicie cygwin1.dll.

On na pytanie to ...

Znalazłem MinGW-W64 kompilatory bardzo dobre, a GCC 4.6 i wyżej (faktycznie, 4.5.1 i powyżej) są bardzo zdolne do wytwarzania dobra 64-bitowy kod dla systemu Windows. Pamiętaj, że MinGW zapewnia zasadniczo to samo C API co msvcrt.dll, więc przejdź do msdn.com w celu dokumentacji (i upewnij się, że zapoznałeś się z dokumentacją "MSVC++ 2003", niektóre funkcje różnią się nowszymi wersjami środowiska wykonawczego), nie rób tego. myślę, że ponieważ jest to GCC, dokumentacja glibc nagle dotyczy systemu Windows. Twój kod musi być wieloplatformowy. Zauważ również, że sizeof(long)!=sizeof(T*) na 64 Windows. Powszechnie spotykany błąd podczas przenoszenia * kodu systemu Windows nix lub x86 na system x64 Windows.

+1

Dzięki za wyjaśnienia i podzielenie się wrażeniami z MinGW w/GCC 4.5.1+ – Nick

+0

Korekta: Cygwin w ogóle nie korzysta z msvcrt, zapewnia własne środowisko wykonawcze C w swoim miejscu. Aktualizacja: Cygwin ma teraz wersję 64-bitową. – Yaakov

+0

@Yaakov Masz rację. Zaktualizowany post. – rubenvb