読者です 読者をやめる 読者になる 読者になる

Win用スクリーンセーバーに挑戦中

memo tech

 以下、自分用作業メモ。自分の環境はWindowsXP SP3、Bootcamp上で、FAT32のディスクにインストールしている。

  1. http://www.microsoft.com/japan/msdn/vstudio/Express/ からVC+ 2008 Express Editionを入手。無料万歳。
  2. http://www13.plala.or.jp/kmaeda/winc/txt/saver01.txt をそのままぺちって動かそうとするも、動かない。
  3. どうやらscrnsave.libが無いらしいので、以下からWindows SDKをダウンロード。
  4. http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en インストール。カスタムインストールでマニュアル類を省いたら2GBくらいディスクが節約できた。
  5. まだ動かない。エラーメッセージは次の通り。『error LNK2019: 未解決の外部シンボル _ScreenSaverProc@16 が関数 _RealScreenSaverProc@16 で参照されました。』
  6. http://darksky.biz/blog/archives/1565 にて解決策を発見。scrnsave.libの代わりにscrnsavw.libを使う。まだ動かない。エラーメッセージは次の通り。『error LNK2019: 未解決の外部シンボル __imp__InitCommonControlsEx@4 が関数 _WinMainN@16 で参照されました。』
  7. http://ir9.jp/prog/ayu/datlog/tech_visual_cpp_syosinnsyani/1038160750/1038160750_02.html の>>326, >>333にて解決策を発見。適当に #pragma comment(lib, "comctl32.lib") を追加する。
  8. コンパイル成功。早速F5キーで動かしてみる。しかしエラーアラートが出る。文面は次の通り。『プロシージャエントリポイントChangeWindowMessageFilterがダイナミックリンクライブラリUSER32.dllから見つかりませんでした』
  9. http://www.dotsakura.com/?mode=blog;id=69 にて解決策を発見。コードの最後に関数を追加する。ちなみに使うフレームワークのバージョンを3.5から2.0に下げる方向も考えたのだけれど、どうも調べた限りだとVC++ 2008はフレームワークのバージョンが3.5に限定されてるっぽい。参考リンク。 http://social.msdn.microsoft.com/forums/ja-JP/vcgeneralja/thread/093f9938-db01-4c31-b098-493159387772
  10. まだ動かない。エラーメッセージは次の通り。『MSVCR90D.dllが見つからなかったため、このアプリケーションを介しできませんでした。アプリケーションをインストールしなおすとこの問題は解決される場合があります。』
  11. http://d.hatena.ne.jp/wataradio/20080906/1220698808 にて解決策を発見。FAT32を使っていたのが悪かったらしい。早速マニフェストの変更をする。
  12. まだ動かない。デバッグ出力を見てみると、一度は『'C:\WINDOWS\system32\shimeng.dll' を読み込みました』と表示されるのに、なぜかその後『'C:\WINDOWS\system32\shimeng.dll' をアンロード』となりその直後に『ネイティブ' はコード -1 (0xffffffff) で終了しました。』と表示される。←いまココ。