オープンソースのビルド ffftp 2024年11月頃 std::make wformat argsなどの標準関数の定義変更によるコンパイルエラー
概要
半年くらい前は問題なかったのですが、Visual Studioを更新するとffftp v5.8 Latest on May 5, 2023をビルドするとエラーになる箇所が発生するようになりました。
- C2664 'auto std::make_wformat_args<int,std::wstring>(int &,std::wstring &)': 引数 1 を 'int' から 'int &' へ変換できません。
というのが代表的なエラーです。
それで調べてみるとmake_wformat_argsは以下のように定義されていました。
正しくコンパイルされる方のmake_wformat_argsの定義を見ると以下の部分で定義されていました。
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include\format
正しくコンパイルされない方は
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\format
で定義されていました。
そして、14.36.32532に合わせるとエラーはなくなりましたので、定義が変わったことが起因しているようです。
対処方法
VisualStudioのバージョンを14.36に合わせこむのが早いですね。もしくはffftpを保守しているKurata Sayuri氏に「はよなおせ」と突撃するか?でしょうか?合わせこむには次のような手順をふむ必要があります。
1.Windowsタスクバーの検索からVisual Studio Installerを検索し、起動します。
2.Visual Studio 2022の項目の変更ボタンを押します。
2.個別のコンポーネントタブを選択します。ものすごく長いスクロールが必要な項目が表示されます。
3.コンパイラ、ビルドツール、およびランタイムの項目の中の
*MSVC v143 - VS 2022 C++ x64/x86ビルドツール(v14.36-17.6)
の項目にチェックを入れます。
4.右下の変更ボタンを押します。
インストールが始まります。
今、導入したビルドツールを適用するには以下の手順でプロジェクトのプロパティを変更します。
1.適用したいプロジェクトffftpを選択した状態でメニューの[プロジェクト]-[プロパティ]を選択します。
2.構成をすべての構成、プラットフォームをすべてのプラットフォームに選択した状態にします。
3.構成プロパティ->全般の項目の中のプラットフォームツールセットから導入した[Visual Studio 2022(v143 14.36-17.8)]を選択します。
以上で適用、切り替えの完了です。問題が解決すると思います。