Visual C++ 2005とWindows 8.1とpchエラーと

| コメント(0) | トラックバック(0)
勤務先サブ環境のWindows 8.1ですが、Classic Start Menuのおかげで快調です。コンパネをカテゴリーで起動する、とか詳細設定から変更しなければならない項目もありますが。ちなみにスタートボタンの図柄を変更しないのが好みです。

さて、仕事でサンプルソースコードを用意することもあるのですが、古いものが一部にあります。Visual C++ 6.0はさすがに捨てましたが、2005はまだ少しありまして。

それでVisual Studio 2005も入れたわけですが、これの調子が悪い。プリコンパイルヘッダーを使うと頻繁に致命的エラーC1023(pchを再ビルドせよ)が出ます。

何をどうしたら一介のアプリケーションの、たかがファイル入出力で、OS依存の不具合が発生するのか、理解に苦しむ部分もありますが、他にも同じ現象の方がいらっしゃるようです。

devenv.exeのプロパティに互換性タブは表示されませんでしたので、互換性のトラブルシューティングから7/Vista/XPと順に指定してみましたが効果なし。そもそもファイル入出力なんか細工してくれないでしょう。

で、どうも原因はファイル入出力ではなく、ASLRというOS側のメモリ操作に関するセキュリティ機能からの影響らしいとか何とか、関連ありそうな話がMSDNのブログに書かれていました。

要約すると、「Win7で強化されたASLRの副作用でpchが壊れたように見えてしまう。コンパイラ自身はASLRを使わないが、仮想メモリ空間全体の問題なのでそれでは不充分になった。根本対策をすることにした。」

ASLRはWin8でもまた強化されたらしいので、上記記事では2008/2010の話しかされていませんが、対策されなかった2005が遂に引っかかってしまったと推測しています。

それが正しいとすれば、つまり打つ手無しです。一応、しつこくビルドすれば何度目かに通るのですが、効率が悪いことこの上ありません。もちろん、プリコンパイルヘッダーを使わなければどうということはありませんが。

最低でも2008に移行した方が良いのでしょう。XPも終わりますし、2005は元々Vistaに難ありな対応しかされませんでした。もう、ゴールしてもいいよね?

P.S.
話は変わって、Visual C++ 2013はかなりC99に追い付いたようなので、SDKが必要とするからといった消極的な理由でなく、久々に積極的に更新したいと思えました。

トラックバック(0)

トラックバックURL: https://mychro.mydns.jp/cgi-bin/mt/mt-tb.cgi/437

コメントする

アーカイブ

ウェブページ

Powered by Movable Type 5.2.13

ホームページ