[openrtm-staff:986] 9/29の作業報告(河内)

河内 のぶ n-kawauchi @ openrtm.org
2017年 9月 29日 (金) 18:29:35 JST


安藤様

河内です

本日の作業内容をお知らせします。
-----------
■VCVerChangerテスト
・wikiに前回行ったテスト内容をまとめているので、今回の不具合対応の
 テスト項目を追加し、改めて全項目のテストを行う
・テスト結果もこのページにまとめている

VCVerChangerのテスト内容・結果
http://redmine.openrtm.org/projects/openrtm_cxx_installer/wiki/VCVerChanger%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88%E5%86%85%E5%AE%B9%E3%83%BB%E7%B5%90%E6%9E%9C

◎テスト項目の半分以上を確認したが、ソース修正のため仕切り直し!

・VCVerChangerは32bitビルドのバイナリを64bit用インストーラ含めても
 問題ないと考えていたが、実行に必要なmfc100.dllの配布との関連で、
 32bit, 64bitそれぞれのバイナリを作る必要があると判明したため。

・32bit版msiに含めるMicrosoft_VC100_MFC_x86.msmは、sysWOW64にコピー
 される
・64bit版msiに含めるMicrosoft_VC100_MFC_x64.msmは、system32にコピー
 される

・自分のvc2010開発環境でテストしていたので気づくのが遅くなってしまった

・VCVerChangerを64bitビルドできるようプロジェクト設定を変更してビルド
 したところエラー発生。SendMessageTimeout関数の引数の型が違うとのこと。
・リファレンス調べたら以下となっていた
------
LRESULT SendMessageTimeout(
  HWND hWnd,            // ウィンドウのハンドル
  UINT Msg,             // メッセージ
  WPARAM wParam,        // メッセージの最初のパラメータ
  LPARAM lParam,        // メッセージの 2 番目のパラメータ
  UINT fuFlags,         // 送信オプション
  UINT uTimeout,        // タイムアウト期間
  PDWORD_PTR lpdwResult // 同期呼び出しの戻り値  ←★
);
------

★のところ。32bitビルドでは「DWORD dwReturnValue」と定義して
「&dwReturnValue」を与えていて通っていたが、64bitビルドはエラーとなる。
コピペしてそのまま使っていたためです。
リファレンスに従い、PDWORD_PTR型で指定するように修正した。

・VCVerChangerはビルドにMFCが必要なので、Jenkins環境ではビルドして
いないが、この機会にコマンドラインからビルドできるようにバッチファイル
を整備した。これなら32bit, 64bitの各バイナリを作ることを忘れないはず!

以上です。

-- 
------------------------------------------------------------------------
河内 のぶ        n-kawauchi @ openrtm.org


More information about the openrtm-staff mailing list