Visual Studio 2022をアップデートしたら古いプロジェクトでエラー LNK1104 発生!
Visual Studio 2022 Community でアップデートの通知(Version 17.5.3)が来ていたのでアップデートしましたが、地図作成アプリ「JSMAP2」のプロジェクトでビルドエラーが発生するようになりました。
エラー LNK1104 ファイル 'MSVCURTD.LIB’ を開くことができません。
JSMAP2のプロジェクトはVisual Studio 2013時代に作ったものですから、上記の古いライブラリが使えなくなったと考えられます。(C++/CLIでフォームアプリケーションという、超マイナー環境のプロジェクトです)
こういう場合、どこかのパスにあるMSVCURTD.LIBにパスを通してあげればよいと考えますが、もうひとつ、プラットフォームの選択でも解決できました。以降、やり方をご紹介します。
※投降後に分かった方法で解決すれば、そちらの方がおすすめです。「Visual Studio 2013 Windows XP (v120_xp) Platform Toolset がインストールされていない時」の項へ移動してください。
ソリューションエクスプローラーでプロジェクトを選択します。マウスの右ボタンクリックでメニューを表示します。
「プロパティ」を選択します。ダイアログが表示されます。
左タブメニューの「General」を選択して、右リストビューの「Platform Toolset」を選びます。プルダウンメニューがありますので、クリックしてメニューを表示します。
Visual Studioのバージョンが選べるようになっています。作成時のVisual Studio 2013を選択しました。
これで再度ビルドしたところ、ビルドが通るようになりました。
開発ツールのアップデートには良くある現象ですが、自動的に解消して欲しいです。また、ChatGPTで解決しようとやってみましたが、解決には至りませんでした。まだまだ、人工知能は発展途上なようです。
※Visual Studio 2013 Windows XP (v120_xp) Platform Toolset がインストールされていない時
インストールするマシンにVisual Studio 2022を初めてインストールした場合は、Visual Studio 2013 Windows XP Platform Toolsetがインストールされていないと思われます。そのため、プロジェクトを開くとVisual Studio 2022 v143を使う変更が行われます。
そうなると、上記と同様にMSVCURTD.LIBがないエラーが発生します。そこで、解決方法がありました。
ソリューションエクスプローラーでプロジェクト名を選択し、右ボタンメニューを表示します。
ツールセットはVisual Studio 2022 (v143)が設定されています。それ以外のバージョンはありません。
そこで、「C++」「全般」を選択して「共通言語ランタイムサポート」の項目へ移動します。ここで、「共通言語ランタイムサポート(/clr)」を選択してください。
再ビルドすると、ビルドが通りました。