Windows API   macOS

ホーム   C/C++チュートリアル


Cプログラミンの一環として始めた Windos API ですが、やってみたら面白かったので、もっと詳しく、かつ簡単に、ステップバイステップで学習するコーナーも作りました。
Windows API Primer
Primer は、入門書という意味です。

Wine

macOSやLinuxなどでWindowsアプリケーションを実行するにはWineというソフトウェアを使います。 Wineは、Parallels Desktopなどとは違い、OS自体を仮想化するのではなく、あくまでもmacOSやLinux上でWindowsアプリケーションを実行できます。

この章では、macOS上でWindows実行ファイルをコンパイルして、その .exe をWineを使って実行する方法を説明します。macOS上でWindows実行ファイルをコンパイルするにはmingw-w64というソフトウェアを使います。

macOS用のWineは2020年5月15日現在では、まだmacOS 10.14 Mojaveまでの対応となっています。macOS 10.15 Catalinaではまだ使えません。なお、Linux用Wineは、Ubuntu 20.04でも使えます。

必要なソフトウェア

今回インストールするソフトウェアは次のとおりです。

Homebrew
macOSに色々なソフトウェアをインストールするのに便利なソフトウェアです。
mingw-w64
macOSでWindows実行ファイルをコンパイルするソフトウェアです。Homebrewを使ってインストールします。
XQuartz 2.7.11
Wineでは、Xウィンドウシステムを使ってGUIを描画します。macOSの場合は、XQuartzの最新版である2.7.11が必要です。最新版と言ってももう何年も更新されていませんが、、、。このソフトウェアもHomebrewを使ってインストールします。なお、Linuxではシステムにデフォルトで用意されているXウィンドウシステムを使います。
Wine Stable 4.0.3
Wineの最新安定版は5.0ですが、私の環境ではうまく動作しませんでした。ここでは、一つバージョンを落として4.0.3を使うことにします。Homebrewを使うと5.0がインストールされてしまいますので、Wineのオフィシャルサイトからダウンロードすることにします。なおUbuntu 20.04では5.0で正常動作します。

Homebrew

Home brew のインストールは、ターミナルを起動して次のように入力します。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

表示される指示に従ってください。HomebrewをインストールするとApple Command Line Toolsが自動でインストールされます。またJavaのインストールを促されたら、その指示に従ってください。

上記のスクリプトで上手くインストールできない場合は、スクリプトが変更されている可能性があります。下記オフィシャルサイトでスクリプトを確認してください。
macOS用のパッケージマネージャー

MinGW

mingw-w64をインストールするには、ターミナルに次のように入力して、エンターキーを押します。

brew install mingw-w64

インストールが終わりましたら、次のコードをwindow.cという名前のファイルに保存してください。Windowsアプリケーションの場合、コメント以外の部分で日本語が含まれている場合は、Unicodeではなく、日本語(Windows、Dos)などのフォーマットで保存してください。

window.c


#include <windows.h>

    /*  メイン関数             */
int WINAPI WinMain      (HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR lpCmdLine,
                         int nCmdShow)
{

    /*  ローカル変数           */
    WNDCLASS wc;
    HWND hwnd;
    
    /*  WNDCLASSの作成        */
    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = DefWindowProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH) (COLOR_APPWORKSPACE + 1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = TEXT("MainWindow");
    
    /*  WNDCLASSの登録         */
    RegisterClass(&wc);
    
    /*  ウィンドウの作成        */
    hwnd = CreateWindow (TEXT("MainWindow"),
                         TEXT("メインウィンドウ"),
                         WS_OVERLAPPEDWINDOW,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         CW_USEDEFAULT,
                         NULL,
                         NULL,
                         hInstance,
                         NULL);
    
    /*  ウィンドウの表示        */
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);
    
    /*  メッセージボックス       */
    MessageBox          (hwnd,
			 TEXT("OKボタンをクリックすると、\nアプリケーションが終了します。"),
			 TEXT("はじめの一歩"),
			 MB_OK);
	
	/*  アプリケーションの終了     */
	return 0;
}
	

ソースコードをコンパイルするには、ターミナルで、window.cを保存したディレクトリに移動して、次のように入力してください。

x86_64-w64-mingw32-gcc window.c -o window

なお、次のコマンドで、C、C++、32bit、64bitをそれぞれコンパイルできます。

C、32bit
i686-w64-mingw32-gcc
C、64bit
x86_64-w64-mingw32-gcc
C++、32bit
i686-w64-mingw32-g++
C++、64bit
x86_64-w64-mingw32-g++

コンパイルはすぐに終わります。コンパイルが終わると同じディレクトリにwindow.exeというWindows実行ファイルが出来上がります。

重要

mingw-w64では、ストック(Stock)と呼ばれる、フォント、アイコン、グラフィックなどのオブジェクトにはアクセスできません。具体的には、コントロールとダイアログの章で使っているDEFAULT_GUI_FONTにはアクセスできずコンパイルできません。またグラフィックに関するものはほぼすべてがストックオブジェクトとなっているため、グラフィックの章のサンプルはコンパイルできません。

XQuartz

Wineをインストールする前に、XQuartzをインストールしなければなりません。

XQuartz 2.7.11をインストールするにはターミナルに次のように入力してエンターキーを押します。ディレクトリはどこでも構いません。

brew cask install xquartz

インストール後は必ず、ログアウトして再ログインするか、macOSを再起動してください。

Wine Stable 4.0.3

次のページからwinhq-stable-4.0.3.pkgをダウンロードしてください。このページにはかなりの数のファイルが掲載されています。根気よく探してください。
Index of /wine-builds/macosx/pool

ダウンロードしたwinehq-stable-4.0.3.pkgをダブルクリックしてインストールを始めます。注意するのは「64bit support (optional)」にチェックをつけることだけです。後はデフォルトのままで大丈夫です。

Wineのインストールが終わると、お使いの環境によっては、先ほどコンパイルしたwindow.exeにWineのアイコンがつきます。Wineのアイコンが付かない場合もありますが問題はありません。

window.exeをダブルクリックするとwindow.exeがWineで実行されます。初めてWineを実行する時は、次の2つのソフトウェアのインストールをうながすダイアログが表示されますので、「インストール」ボタンをクリックしてください。

  1. .NET環境
  2. Gekko(おそらく2度うながされると思います)

実行結果



29701 visits
Posted: May. 15, 2020
Update: May. 18, 2020

ホーム   C/C++チュートリアル   目次