Skip to main content.

Documentation

文書

本ページは MinGW 本家サイトの 「Documentation」を翻訳したものです。

目次

MinGW のインストール

現在、インストールに関する情報はダウンロードのページにあります。

MinGW を利用したコンパイルとビルド

コンソールアプリケーションの作成方法

例を挙げましょう。以下のコードは単純な C プログラムの例です。 試しに、この部分を hello.c というファイルにカットアンドペーストしてみて下さい。

#include <stdio.h>

int main(int argc, char **argv)
{
    printf ("Hello\n");
    return (0);
}

hello.c という C のファイルからコンソール形式の実行形式である hello.exe を作成するには、以下のようにします。

gcc -c hello.c

これによって hello.c はオブジェクトファイルである hello.o にコンパイルされます。

gcc -o hello hello.o

これによって hello.o から実行形式 hello.exe が作成されます。 代わりに、一つのステップを利用してコンパイルとリンクを行うことも出来ます。

gcc -o hello hello.c 

以下のコードは単純な C++ プログラムの例です。試しに、この部分を hello.cpp というファイルにカットアンドペーストしてみて下さい。

#include <iostream>
int main(int argc, char **argv)
{
    cout << "Hello" << endl;
    return (0);
}

C++ プログラムでは、以下のようにしてコンパイルとリンクを行います。

g++ -c hello.cpp
g++ -o hello hello.o
    

Windows アプリケーションの作成方法

例を挙げましょう。以下のコードは単純な Windows プログラムの例です。

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, 
                    HINSTANCE hPrevInstance, 
                    PSTR szCmdLine, 
                    int iCmdShow) 
{
    MessageBox (NULL, "Hello", "Hello Demo", MB_OK);
    return (0);
}

hello.c という C ファイルから Windows の実行形式である hello.exe を作成するには、以下の手順に従います。

gcc -c hello.c

これによって hello.c はオブジェクトファイルである hello.o にコンパイルされます。

gcc -o hello hello.o -mwindows

これによって hello.o から実行形式 hello.exe が作成されます。 コンソールアプリケーションの代わりに Windows の実行形式を作成するためには -mwindows スイッチが必要です。 このスイッチは適切な Windows ライブラリをリンクします。 標準的な Windows アプリケーションではあるがコンソールスクリーンも必要という場合は、-mwindows に加えて -mconsole フラグも追加して下さい。

実行形式にリソースファイル(.rc)内のリソースを追加することも必要ならば、他のソースファイルと同様にリソースファイルもコンパイルし、実行形式を作成する際にコンパイルされたリソースも含めてリンクする必要があります。 以下に挙げる例は、resfile.rc というリソースファイルをコンパイルし、そしてリンクする方法を示しています。

windres -o resfile.o resfile.rc
gcc -o hello hello.o resfile.o -mwindows
    

DLL の作成方法

例を挙げましょう。この部分を dllfct.h というファイルにカットアンドペーストしてみて下さい。

#ifdef BUILD_DLL
// the dll exports
#define EXPORT __declspec(dllexport)
#else
// the exe imports
#define EXPORT __declspec(dllimport)
#endif

// function to be imported/exported
EXPORT void tstfunc (void);

この部分を dllfct.c というファイルにカットアンドペーストしてみて下さい。

#include <stdio.h>
#include "dllfct.h"

EXPORT void tstfunc (void)
{
    printf ("Hello\n");
}

この部分を hello.c というファイルにカットアンドペーストしてみて下さい。

#include "dllfct.h"

int main ()
{
    tstfunc ();
    return (0);
}

これらから DLL と実行形式を作成するには、以下のようにします。

gcc -c hello.c
gcc -c -DBUILD_DLL dllfct.c
dllwrap --output-lib=libtstdll.a --dllname=tst.dll --driver-name=gcc dllfct.o
gcc -o hello.exe hello.o -L./ -ltstdll
    

DLL に関する更なる詳細については、 http://www.nanotech.wisc.edu/~khan/software/gnu-win32/dllhelpers.html を参照して下さい。

DLL 用の DEF ファイルの作成方法

定義ファイル(.def)が提供されていなくとも、様々な方法で定義ファイルを作成することが可能です。

GNU による開発ツールの文書

Win32 API の文書

MinGW は OS と共に配布されているランタイムライブラリを利用していますが、 OS は API の文書をサポートしてませんし、その文書は再配布可能でもありません。 Microsoft の開発ツールを持っていなかったり、又は MSDN サブスクリプションに参加していないとしても、 以下に挙げる場所から API の文書にアクセスすることが出来ます。

Tips, HOWTO, 寄贈された文書、など

** 注意 ** 本セクションの幾つかの情報は古くなってしまい、現在では歴史的な記録となってしまっていると思われます。 特に、「-mno-cygwin」及び Cygwin 開発環境における MinGW の利用に関する最新かつ適切な情報については、FAQを参照して下さい。

イントロダクションとチュートリアル

特定のソフトウェアパッケージに対する開発用モジュール

クロスコンパイルと他のツールの利用