プログラミング研究所 プログラミング研究所 http://www.program-lab.jp/
プログラミング研究所
プログラム研究自作ソフトウェアプログラムメモリンク


  • カテゴリ別アーカイブ

    .NET Framework
    C++/CLI
    DirectX
    GBA
    JavaScript
    OSSの移植
    PHP
    Win32/64
    WordPress
    その他
    ソフトウェアの設定
    ツール
    ライブラリ
    自作ソフト
    製品レビュー


  • エントリ一覧


    Syndicate this site (XML)

    Powered by
    Movable Type







  • 管理者:NMVL

    nmvl★program-lab.jp
    ※アドレスの ★ を @ に置き換えてください。

    釣りの話題はこちらから
    www.fishing.hokkaido.jp






    « TClock Lightをx64へ移植 | メイン | IME自動切り替え機の作成 »

  • mp3infpをx64へ移植 【OSSの移植】

    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



    投稿者 NMVL : 2005年6月 5日 13:54