【SDL2,MSYS2/MinGW】WindowsでSDL2を使用したプロジェクトのコンパイルエラーの解決策

目次

SDL2を使用したプロジェクトでundefined reference to `WinMain’が発生する

環境

  • Windows10 Pro
  • MSYS2 / MinGW x64
  • SDL version 2.0.16

現象

MSYS2/MinGW x64を使用してSDL2を使用した最小プロジェクト(ウィンドウを表示させるだけ)のプロジェクトをコンパイルしようとしたらエラーになった

コード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <SDL2/SDL.h>

int main(int argc, char* argv[]) {
// SDL初期化
int sdlResult = SDL_Init(SDL_INIT_VIDEO);
if (sdlResult != 0) {
SDL_Log("SDLを初期化できませんでした:%s", SDL_GetError());
return 0;
}

// Window作成
SDL_Window *mWindow = SDL_CreateWindow("Fist Window", // タイトル
SDL_WINDOWPOS_CENTERED, // 画面のx座標の中心
SDL_WINDOWPOS_CENTERED, // 画面のy座標の中心
640, // 幅
480, // 高さ
0 // フラグ
);

if (!mWindow) {
SDL_Log("ウィンドウの初期化に失敗しました:%s", SDL_GetError());
return 0;
}

while (true) {
SDL_Event ev;
while (SDL_PollEvent(&ev)) {
switch (ev.type) {
// ユーザーがウィンドウを閉じようとしたとき
case SDL_QUIT:
break;
}
}
}

return 0;
}

コンパイルコマンド

事前にライブラリ周りのインストールは終わっており、パスも通っている

1
g++ Main.cpp -lSDL2

解決策

GitHubのIssueに同じような問題が上がっていたので、そこに書いてある解決策を使ったら無事にビルドできた

1
g++ Main.cpp -lmingw32 -lSDL2main -lSDL2 -mwindows

【SDL2,MSYS2/MinGW】WindowsでSDL2を使用したプロジェクトのコンパイルエラーの解決策

https://blog.djima.net/2021/09/07/【SDL2-MSYS2-MinGW】WindowsでSDL2を使用したプロジェクトのコンパイルエラーの解決策/

Author

Daiki Iijima

Posted on

2021-09-07

Updated on

2024-04-17

Licensed under