LNK1103: debugging information corrupt; recompile module

f:id:espresso3389:20090706221238p:image

Windows 7関連のコードを書こうとすると、必然的にWindows SDKのベータバージョンをインストールすることになるんですが、インストール後に迂闊に、Windows SDK Configuration Toolで、VS2005までチェックをしたりしてしまい、VS2005でなんやかんやをコンパイルしたりするときに、

1>windowscodecs.lib(guids.obj) : fatal error LNK1103: debugging information corrupt; recompile module

なんて嫌なエラーを見ることになってしまいました。それ、私がビルドしたライブラリじゃありませんよ・・・。

KB949009

ちょっとだけ調べてみたところ、

KB949009 FIX: Error message when you build a project in Visual Studio 2005 SP1 after an .lib file or an .obj file that was built by using Microsoft Visual C++ 2008 is added to the project: "Fatal error LNK1103: debugging information corrupt

というものを発見。

VS2008とVS2005でデバッグ情報のフォーマットが変わってしまったんだよという内容。つまり、VS2008で作成した.objとか、.libをVS2005で利用させる場合には注意が必要と言うこと。ちょっと、えぇぇ。ひょっとして自分のプロダクトも不味いかもとか思ってしまう問題ですが、それは置いておいて、結局、Windows 7向けのSDKが既にVS2008かあるいはそれ以上のバージョンでビルドされているから、VS2005だと注意ということだと解釈しました。

で、パッチがリリースされていますよと。

ダウンロード画面がいろんな意味で興味深い。

f:id:espresso3389:20090706221239p:image

「ダウンロードしたファイル」って、まだダウンロードしてないし、ファイルサイズがx86が著しく大きい割には、x64が異様に小さい。というか、結局、VS80sp1-KB949009-X64-INTL.exeは、

f:id:espresso3389:20090706221240p:image

とか言いやがって、最終的に、

f:id:espresso3389:20090706221241p:image

何それ・・・。

とはいうものの、エラーは出なくなった。