しまぞうブログ

プログラミングと資産運用

Visual Studio 2022でstdio.hが見つからない…

C言語の勉強のためにVisual Studio 2022を使おうとして、定番の"Hello World!"のプログラムを実行しようとしたところ、「stdio.hが見つかりません」という、困ったエラーが出ました。まさかこんな最初からつまづくとは…。

検索すると、同じようなエラーに出会っている人は多いものの、記事のVisual Studioのバージョンが古かったりで、なかなか解決策が見つからず。

そんなこんなで、ほぼ丸1日調べてなんとか解決しましたのでメモしておきます。

症状

プログラミング学習で最初に出てくる"Hello World!"のプログラムを実行すると、「stdio.hが見つかりません」と言われました。具体的には以下のようなプログラムです。

#include <stdio.h>

int main(void){
    printf("Hello World!");
    return 0;
}

stdio.hは"C:\Program files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"に格納されています。

Visual Studioのインクルードディレクトリを確認すると、末尾が"ucrt"のディレクトリは"C:\Program Files (x86)"ではなく、"C:\Program Files"になっており、参照先が誤っています。

原因

こちらのサイトによると、古いバージョンのWindows SDKにバグがあるらしいです。アップデートしても古いバージョンのWindows SDKが邪魔するようです。

解決策

以下の手順でWindows SDKを新しいバージョンに更新することで、この問題を解決することができました。

まずは、Visual Studio Installerを起動して「変更」をクリック。

インストール済みのWindows SDKのチェックを外し、最新バージョンのWindows SDKにチェックを入れ「変更」をクリック。

インストール完了後、新しくプロジェクトを作成し、上記と同様のプログラムを実行すると、正常にビルドできました。

副作用が無いか心配ですが、しばらくこのまま使ってみます。