Windows Updateの問題に対する対応について(2026年4月)

Object Pascal 備忘録」でWindowsリソースを使用する例を作成しましたが、Windows Update [2026-03 パッチ (KB5086672) (26200.8117)] ,を適用したところコンパイルがエラーになりました。エラーになったのはObject Pascalソース中に {$R VerInfo.rc} などリソーススクリプトを使用したもで、リソースのコンパイルがエラーとなりました。
Pascal 日和 ホームページ」で対応を作成しましたので報告します。

【問題】
Windows Updateで 「crtdll.dll」(C Runtime Library)の内容が変更され「_fmode_dll」エントリなどが廃止されました。これにより古い「gcc.exe」などが例外が発生し実行できなくなり、「gcc.exe」を呼び出す「windres.exe」も実行できなくなりました。これはバグではなくそういう方針のようです。
Free Pascal 3.2.2に同梱の「gcc.exe」は古いのでこの問題に該当します。そのため、fpc コンパイラでリソーススクリプト(*.rc)のコンパイルができなくなりました。
私が確認したところ、Windows Update「2026-03 パッチ (KB5086672) (26200.8117)」適用から動作しなくなりました。
OK:Windowsバージョン:25H2 ビルド:26200.8039 – 「crtdll.dll」(サイズ:149,019)
NG:Windowsバージョン:25H2 ビルド:26200.8117 – 「crtdll.dll」(サイズ:: 60,928)

【対応】
「TDM-GCC」では、新しい「gcc.exe」が採用されているため「crtdll.dll」に依存せず Windows Update 適用後も「gcc.exe」が動作します。「windres.exe」も動作します。
そのため、 fpc コンパイラに「TDM-GCC」の「windres.exe」を呼び出すパラメータを付けたコマンドスクリプト[コマンドスクリプト(その2)]を作成しました。
{$Rxxx.rc} を設定しているプログラムのコンパイルは[コマンドスクリプト(その2)]を使用してください。リソーススクリプトがなくても使用できます。
事前に「TDM-GCC インストール」を実行してください。この手順でインストールされた環境を前提としています。

ダウンロードも追加しました。「Free Pascal関連ダウンロード」の[Free Pascal用のコマンドスクリプト(その2)]です。

※ 「crtdll.dll」はWindows 11 64bit版の場合「C:\Windows\SysWOW64\crtdll.dll」にあります。32bit DLLです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください