« Windowsフォームの閉じるボタンが押されたことを知る |
メイン
|
ファイルのDrag&Dropを許可する »
mp3infpをx64へ移植(VC6編) 【OSSの移植】
試しに使ってみた、VC2005Expressの動作の重さや、
やたらとエラー吐いて落ちまくる不安定さに、
計画していたVisualStudio2005の購入計画も保留となってしまい、
まだまだ我が家では現役続行のVC6を使用して、
以前VisualStudio2005を使ってx64へ移植を行ったmp3infpを、
x64へ移植できないかと、やってみた時のメモ。
用意するもの
- Microsoft Visual C++ 6.0 Professional(以下VC)
- Microsoft Platform SDK for Windows Server 2003 R2(以下PSDK)
- mp3infpのソースコード(Ver.2.52dを使用)
作業方法
- mp3infpのソースコードを適当な場所へ解凍(日本語を含まないパスの方がよい)
- x64用の設定でVCを起動(方法はPSDKとかAMDのページを参考にしてください)
- OggVorbisのヘッダとライブラリのパスを追加
- 全プロジェクトのリンカのmachineオプションを /machine:AMD64 に変更
- stdafx.h の afxdb.h,afxdao.h のinclude行をコメントアウト
- リンクするライブラリに bufferoverflowu.lib を追加
- lang_japaneseとmp3infp_registのリンクするライブラリから odbc32.lib,odbccp32.lib を削除
- ソースコードの修正(※1)
- 全ての*.manifestのprocessorArchitectureをX86からAMD64(または*)へ変更
- mp3infpの依存関係からlang_japaneseを外す
- カスタムビルドの Verupdate.exe の呼び出しを削除
- 全てビルド
- 作成されたファイルmp3infp.cpl, mp3infp.dllをC:\WINDOWS\system32へコピー
- mp3infp_regist.exeを適当な場所へコピー
- その下にフォルダlanguageを作成し、Japanese.lngをコピー
- レジストリエディタ(regedit.exe)を起動して、HKEY_LOCAL_MACHINE\Software以下にキー「win32lab.com」を作成し、その下に「mp3infp」を作成する。
- その中で、文字列値「path」を作成し、値をmp3infp_regist.exeをコピーした場所にする
- ファイル名を指定して実行から「regsvr32.exe mp3infp.dll」を実行
※1 ソース修正箇所について
修正箇所は、前回までと同じと考えていいですが、
エラーが出なかった部分については、未修正としたので少し減ってます。
- GetWindowLongをGetWindowLongPtrに変更。同時にDWL_USER→DWLP_USER
- SetWindowLongをSetWindowLongPtrに変更。同時にDWL_USER→DWLP_USER, DWL_MSGRESULT→DWLP_MSGRESULT
また、SetWindowLongの引数で、ポインタをDWORDにキャストして渡している箇所があるが、ここのキャストをLONG_PTRに必ず変更すること
- GetFloppyType.cpp 6~7行目をコメントアウト
- SendMessageTimeoutの最後の引数をDWORD型からDWORD_PTR型に変更
- ShellExt.h 226行目のUINTをUINT_PTRに変更
- ShellExt_IContextMenu.cppの97行目のUINTをUINT_PTRに変更
- ShellExt_IShellPropSheetExt.cppのダイアログプロシージャ代入箇所(psp.pfnDlgProc=PageDlgProc_XXX)の右辺にキャスト(DLGPROC)を追加
バイナリ・ソースは、少々お待ちください。
投稿者 NMVL : 2006年4月11日 15:10