« 炎エフェクトプラグインサンプル動画 | メイン | スクリプトデバッガー »

2010年01月30日

日常の備忘録:: Visual Studio 2008 と Windows 98

    

気付いてなかったんだけど、Visual Studio 2008 でビルドすると Windows 98 では動かない実行ファイル/DLLが出来る。
何でかなぁと思った調べていたら、対応が削除された様子。
互換性に影響する変更点
実行ファイルに動作する Windows のバージョンが埋め込まれているようなんだけど、この値が変更されて動作しなくなったようだ。
ただ、その値を書き換えればうまくいくかというと、それでもだめなよう。
Visual C++ 2008 で Win98/Me/NT4 対応バイナリを作りたい このページにその辺りのことが書かれている。
リンカのオプションで /SUBSYSTEM:WINDOWS,4.0 とかしてもエラーになってリンクできない。
Windows 98 な対応させたかったら Visual Studio 2005 使わないとダメなよう。

Windows98とVisualStudio2008 ここでも同じことが書かれている。
と言うか、気付くの遅すぎか。

今公開している吉里吉里2についている krmovie.dll ってどっちでビルドしたっけ?
まあ、9X 系のサポートは吉里吉里2でも削除されてるのでいいと言えばいいけど。
1年半くらい誰にも何も言われてないから 2005 でビルドしてたのかな。
次ビルドする時は、気をつけておこう。
ただ、Windows SDK の対応表を見ると、Windows 7 で動く 6.1.7600.16385 では、Visual Studio 2005 の対応が、非推奨になっているので、また面倒。
krmovie.dll のビルドに必要な DirectShow は、Windows SDK に移っているので、Windows 7 で新しく環境作ってビルドしようとしたら、はまるかもしれない。

Windows 98 は、主要コンポーネントだけ見ると DirectX 9、Windows Media Player 9、IE6 とまだまだ使えそうなんだけど、開発する側の環境が厳しくなってきているか。
今リリースしているプラグインは、Visual Studio 2008 でビルドしているので、Windows 98 では動かないものがほとんどなんだけど。気付いてなかったから。
最近 Windows 98マシンを入手したので、その辺りの確認をしたから気付いただけと言う状態。
Visual Studio 2008 にして、Windows 9x系 を切るのなら UNICODE 前提でやってしまっていいから、その辺りは楽になる。

2010/01/31 追記
かなり強引な方法でDLLのインポートを横取りする(未参照を防ぐ)
Windows 95 で動くプログラムを作る (VS2008編)
ここに無理矢理動かす方法がのっていたのでリンク。
試してみると、バージョン書き換えすれば読み込みは少し進むけど、フリーズした。
リンク先のアセンブリコード追加すると、また DLL がロードできなくなった。
アセンブラのオプションとかがまずいのかな。
まあ、そこまで VS2008 でなんとかしたいわけではないからいいか。



投稿者 Takenori : 2010年01月30日 18:41




comments powered by Disqus
Total : Today : Yesterday : なかのひと