プログラミング研究所 プログラミング研究所 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






    « WindowsXP Professional x64 Edition動作可否リスト | メイン | mp3infpをx64へ移植 »

  • TClock Lightをx64へ移植 【OSSの移植】

    TClock LightをWindowsXP x64で動作するように改良したときの方法と手順

    この記事は、tclocklight-040702-3.zipを元に作成しています。
    バージョンが違う場合、修正方法が変わる場合があります。



    1. TClock Lightをダウンロードし、適当な場所へ展開(パスに日本語が含まれるとcl.exeがうまく動かない場合があった)
    2. Windows Server 2003 SP1 Platform SDKをダウンロードし、インストール
    3. スタートメニュー→Microsoft Platform SDK for Windows Server 2003 SP1→Open Build Environment Window→Windows XP 64-bit Build Environment→Set Windows XP x64 Build Environment (Retail) を開く
    4. 1の展開した場所のsource\(Makefileがあるところ)に移動
    5. ソースの修正(※1)
    6. 全てのtclock.manifestのprocessorArchitectureをX86からAMD64(または*)へ変更
    7. nmakeで実行ファイルを作成
    8. 7で作成された64bit版のtcdll.tclock, tclock.exe, tcplayer.exe, tcprop.exe, tcsntp.exe, tctimer.exe とlangフォルダを同じフォルダに入れ作業完了



    ※1 ソース修正箇所について

    1. SetWindowLong→SetWindowLongPtr に置き換える
      全てのソースに対して、SetWindowLongをSetWindowLongPtrに置き換える。
      そのとき引数にGWL_WNDPROCが指定されている場合は、同時にGWLP_WNDPROCに変更する
    2. GetWindowLong→GetWindowLongPtrに置き換える
      全てのソースに対して、GetWindowLongをGetWindowLongPtrに置き換える。
      そのとき引数にGWL_WNDPROCが指定されている場合は、同時にGWLP_WNDPROCに変更する
    3. SetClassLong→SetClassLongPtrに置き換える
      全てのソースに対して、SetClassLongをSetClassLongPtrに置き換える。
    4. GetWindowLong→GetWindowLongPtrに置き換える
      全てのソースに対して、GetWindowLongをGetWindowLongPtrに置き換える。
      そのとき引数にGCL_WNDPROCが指定されている場合は、同時にGCLP_WNDPROCに変更する
    5. dllutl.cの16行目のLONGをLONG_PTRに置き換える
    6. Makefileの8行目、デフォルトライブラリの設定を削除(デフォルトライブラリを使用するようにする)(※2)
    7. *.makのLIBS=にbufferoverflowu.libを追加



    ※2
    cl.exe Ver.14.00.40310 では、ここにあるmemsetのインライン展開がされていないようで、デフォルトライブラリ未使用時にはリンクエラーが発生します。



    以上が、x64への移植の作業内容ですが、実はコンパイル中の警告をかなりの数 無視していたりします。本来であれば、それらについてもチェックし必要があれば修正するべきですが、今のところ問題なく動作しているのでいいかなと^^;


    追記(05/05/18)
    64bitバイナリが起動失敗する原因について、喜多様より情報をいただきましたので、
    それに基づいて、手順を修正しました。


    追記(05/05/18)
    上記方法で作成した実行ファイルを配布します。
    ライセンスは、オリジナルTClock Lightに従ってください。
    tclocklight-040702-3-amd64.lzh



    投稿者 NMVL : 2005年5月 4日 13:23