Tatsu still writes something... Fourth season

これからも私はなにかをしてなにかを書く

Visual Studioが腐ってたので直した

コンパイルできない?

仕事の関係もあり、久々にC++の勘を取り戻そうかと自分のプロジェクトをイジっているときに事態は起きた。

「winnt.hをインクルードするときにctype.hが見つからない」とな?

Visual Studio 2008もインストールしていたWindows 10マシンで、こっちでもコンパイルできるようにしていたのでこっちでコンパイルすると無事コンパイルできた。

自作ソフト色々と扱うために色々入れていたWindows 10マシンだったので、今度はすっきりとしたWindows 11マシンに持っていってVisual Studio 2022でコンパイルしてみた。こっちはうまくいった。

どちらも自作ソフトの都合上Visual Studio 2019/2022を両方入れているマシン。はて、何が違うのだろう?

くそ面倒な決着

ふと、Windows 11にVisual Studioを入れたときの入れ方を思い出した。まずはWindows 11と合わせてでたVisual Studio 2022をインストールした。で、一応.NET Framework 3.5開発機能も入れたのだが、.NET Framework 3.5用のプロジェクトがコンパイルできなかった。さて、どうした物かとふとストアをみるとVisual Studio 2019がしれっと出ていて対応していると出ていた。そこでインストールしたところ、.NET Framework 3.5用のプロジェクトをVisual Studio 2022でもコンパイルできた。

こういうことがあったので、インストーラーの登録が腐っているのかと考えてVisual Studio 2019・2022を共にアンインストール、古いWIndows SDKもアンインストールしてからVisual Studio 2022→2019の順にインストールを行うとVisual Studio 2022でコンパイルしたときにwinnt.hをインクルードするときにctype.hが見つからない現象は解決した。

どうやら、Visual Studioが2022で64ビット化したときに前に入れていた32ビットのVisual Studio 2019によるWindows SDKの登録が邪魔をしていたようだ。2019入れたあとに2022入れるのは普通だと思うのでなんだ、そのあほな現象はと思わざるを得ない。

リソースエディタも腐っていた

今回はバージョンアップを行うので、ダイアログのリソース表記も変えようとVisual Studio 2022のリソースエディタでダイアログを変更しようと思ったらVisual Studio 2022が固まる。なんで?

Visual StudioのVisual C++プロジェクトは2010から形式が一緒なので、Visual Studio 2019でプロジェクトを開いてダイアログを編集しようとしてみる。こっちではうまくできた。Visual Studio 2022のバグかよ。とりあえずフィードバック。

今回イジったプロジェクトの作業を完結させるにはVisual Studio 2019でないと現状はだめそうなので使用するコンパイラVisual Studio 2019から呼び出せるVisual Studio 2019のコンパイラーに合わせることにする。これで、コーディングはVisual Studio 2022の最新機能でコンパイルして、仕上げはVisual Studio 2019で決着をつけるということにした。最新のC++の機能を使う事を見据えてVisual Studio 2022のコンパイラーを使いたかったのだが。残念。

これを解決するのにどのくらいの時間がかかったんだろう?うーん、不毛だ。

オチ

それよりもお前のプロジェクトをすべてVisual Studio 2022で済むようにしろ?ごもっともなことです。