mp3infpをx64へ移植

TClockの移植に成功したので、今度はmp3infpの移植に挑戦しました。
mp3infp250_src.cabを元に作成しました。
また、開発環境にVisualStudio2005β2日本語版を使用しています。
VisualStudio2005β2日本語版は、MSDN サブスクリプション や、雑誌の付録で入手できます。
私の場合は、MSDN サブスクリプションには入会していないので、日経BPムック「完全詳説!VisualStudio2005&SQL Server2005」\1900から入手しました。
なお、ExpressEditionでは、x64コードを作成できません。
必ず、TeamSystemなどのx64コードを出力可能なものを用意する必要があります。
また、OggVorbisのヘッダーとライブラリが必要になります。
OggVorbisのx64用ライブラリは現在のところ公開されていないようですので、
自分で作成する必要があります。こちらも、別途作成し用意してください。

  1. mp3infpのソースコードをダウンロードし、適当な場所へ展開
  2. mp3infp.dswを、VisualStudio2005で開く
  3. プロジェクトを変換するか聞かれるので、全て変換する
  4. 構成マネージャを起動し、ソリューションプラットフォームにx64を追加
  5. ソースコードの修正(※1)
  6. 全ての*.manifestのprocessorArchitectureをX86からAMD64(または*)へ変更
  7. 全てビルド
  8. 7で作成されたファイルmp3infp.cpl, mp3infp.dllをC:\WINDOWS\system32へコピー
  9. mp3infp_regist.exeを適当な場所へコピー
  10. その下にフォルダlanguageを作成し、Japanese.lngをコピー
  11. レジストリエディタ(regedit.exe)を起動して、HKEY_CURRENT_USER以下にキー「win32lab.com」を作成し、その下に「mp3infp」を作成する。
  12. その中で、文字列値「path」を作成し、値を9でコピーした場所にする
  13. ファイル名を指定して実行から「regsvr32.exe mp3infp.dll」を実行

※1 ソース修正箇所について
修正する箇所が多かったため、まだまとめきれていませんが、
基本的に、コンパイラのエラーを全て修正しただけです。
ロジック等に変更は加えていません。
以下、差分をとって判明している分のみ記載

  1. GetWindowLongをGetWindowLongPtrに変更。同時にDWL_USER→DWLP_USER
  2. SetWindowLongをSetWindowLongPtrに変更。同時にDWL_USER→DWLP_USER, DWL_MSGRESULT→DWLP_MSGRESULT
    また、SetWindowLongの引数で、ポインタをDWORDにキャストして渡している箇所があるが、ここのキャストをLONG_PTRに必ず変更すること

  3. Unicode関係のAPI(WideCharToMultiByteや、MultiByteToWideChar, UTF16toUTF16BE等)の引数のキャストを修正(unsigned short * → WCHAR *)
  4. GetFloppyType.cpp 6~7行目をコメントアウト
  5. for文で、使用する変数(int i)の宣言が不足している箇所に、宣言を追加
  6. SendMessageTimeoutの最後の引数をDWORD型からDWORD_PTR型に変更
  7. ShellExt.h 226行目のUINTをUINT_PTRに変更
  8. ShellExt_IContextMenu.cppの97行目のUINTをUINT_PTRに変更
  9. ShellExt_IQueryInfo.cppの1050,1055,1060,1065,1070行目の右辺側にキャスト(LPCSTR)を追加
  10. ShellExt_IShellPropSheetExt.cppの101,128,156,183,216,249,280,311,342,373,404,435行目の右辺にキャスト(DLGPROC)を追加

今回も、TClock Lightのときと同様、警告は無視しています。
そもそも、ほとんどの警告はコンパイラのバージョンアップにより、
(昔より)構文チェックが厳しくなったことによるもののようですから、
警告の大部分は無視しても大丈夫な警告なのかな。とも今は考えています。
今のところ、正常に動いているようですし、たぶん大丈夫でしょう


追記(05/06/06)
上記方法で、変更したソースを公開します。
実行ファイルの配布については、VisualStudio2005β2のライセンス条件により
配布することができないため、現在は行っておりません。
mp3infp250_x64_src.lzh (678KB)


追記(05/06/07)
Visual Studio 2005 Beta 2 Go-Liveライセンスにより、実行ファイルを公開します。
以下のことについて、ご理解のうえダウンロードください。

  1. Visual Studio 2005 Beta 2 Go-Liveライセンスにより、配布されます。
    Go-Liveライセンスについては、リンク先のページを参照してください。

  2. 実行ファイルは、β版の開発ツールにより作成されています。
    通常より、リスクが高いことを認識してください。

mp3infp250_x64.lzh (974KB)
インストール方法は、同梱のテキストファイルを参照してください。
うまくいけば、このようになります。
mp3infp_x64_screenshot.png

コメントを残す

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