インストールが終ったら、メニューから MSYS2 UCRT64 を起動。
以下の二行を入力
pacman -Syu
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
途中で引っ掛かる場合は再度入力して最後まで実行する。
g++ --version と打ち込んで、インストールされたことを確認。
ディスク上のサイズは 1.52G であった。
PATH=C:\msys64\ucrt64\bin;C:\msys64\usr\bin;%path% set MSYSTEM=UCRT64 chcp 65001 rem bash の起動はお好みで
C++ 入門のページからサンプルをダウンロード。
main.cpp #includeusing namespace std; int main(){ cout << "HelloWorld." << endl; return 0; }
g++ main.cpp
コンパイラを起動するがエラーとなる。
調べてみると、libwinpthread-1.dll の呼出でエラーとなっている。
c:\windows\system32 にある dll が旧い(2018年)のが原因
msys64\ucrt64\bin にあるdll(2025年)をc:\windows\system32 に上書きコピーして解決.
g++ main.cpp と入力して a.exe が作成されたことを確認。
しかし a.exe を起動しても何も表示されずに終わる。
そこで、デバッグオプション付でコンパイル
g++ -O0 -g main.cpp
デバッガーから起動
gdb a.exe
デバッガー上で run コマンドで走らせる。
(gdb) run
最後に以下のメッセージが出て、エラーが発生していることが判る。 (デバッガーは quit コマンドで終了)
Thread 1 received signal SIGSEGV, Segmentation fault. 0x000000006fcaac42 in libstdc++-6!_ZNSo6sentryC1ERSo () from C:\WINDOWS\SYSTEM32
そこで、 msys64\ucrt64\bin\libstdc++-6.dll をc:\windows\system32 に上書きコピーして解決.
今度は a.exe を実行してもエラーにならず、 "HelloWorld."と表示される。
インストールには @koyukitukimino(つきみの こゆき)さんのページを参考にした。
2026年1月8日
戻る