Visual Studio 2022をアップデートしたら古いプロジェクトでエラー LNK1104 発生!

2023年3月25日

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)」を選択してください。

再ビルドすると、ビルドが通りました