2012-03-30 15 views
5

Visual C++コンパイラの代替として、MinGWコンパイラの64ビット版の信頼性が心配です。信頼できる64ビットGCCコンパイラとしてのMinGW

たとえば、GCC 4.6.2を使用してLinux上でC++コードが完全に構築され実行されているとすれば、対応するMinGWは64ビットWindows環境下で同様に信頼性の高い実行可能ファイル/ライブラリを生成しますか?

Cygwinは信頼性の点でより良い選択肢ですか? Visual C++コンパイラにもどちらもありませんか?

+0

標準やその他のライブラリのWindows固有の部分にバグがない限り、コードは同じであると思います(「呼び出し規約」を除く)。 –

答えて

14

まず、いくつかの誤解:

  1. MinGWの(.ORG)は、ランタイムの64ビットバージョンを提供していません。 MinGW-w64は、32ビットCRTに加えて、彼らはARMのサポートにも取り組んでいます。また、さまざまな追加API(Win32など)をサポートします。

  2. 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に当てはまると思う。あなたのコードはクロスプラットフォームでなければなりません。 x32 Windowsではsizeof(long)!=sizeof(T*)にも注意してください。 * nixまたはx86 Windowsコードをx64 Windowsに移植する際によく起こるエラーです。

+1

MinGW w/GCC 4.5.1 + – Nick

+0

での経験を共有していただきありがとうございます。訂正:Cygwinはmsvcrtをまったく使用せず、代わりに独自のCランタイムを提供しています。アップデート:Cygwinは現在64ビットバージョンを持っています。 – Yaakov

+0

@ヤコフあなたは正しいです。更新された投稿。 – rubenvb

関連する問題