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にチェックを入れ「変更」をクリック。
インストール完了後、新しくプロジェクトを作成し、上記と同様のプログラムを実行すると、正常にビルドできました。
副作用が無いか心配ですが、しばらくこのまま使ってみます。