- 日時: 2013/08/03 14:27
- 名前: Woodman
- ***********************************************************************************
* カテゴリー:[開発環境][][] * キーワード: 64bit,Mscomctl.ocx , , , , *********************************************************************************** 1 問題の所在 VB6のソースコードをプロジェクトごとコピーして使うことはよくあります。しかし、WinXP/7の32bitから64bitへコピーして読み込もうとすると、次のエラーが出る場合があります。 「D:\XXXX\MSCOMCTL.OCXを読み込めません。--プロジェクトのロードを続けますか?」 現在のところ把握しているOCXはMSCOMCTL.OCXだけですが、どうもこのOCXはバージョンの問題があるようです。 2 問題の個所 (1) 32bitでのvbpファイル 次のように記述されている箇所があります。 Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\system32\stdole2.tlb#OLE Automation Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX (2) 32bitのfrmファイル Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0"; "MSCOMCTL.OCX" 3 対策 かなり荒っぽいのですが、次のようにすると読み込める事が出来ました。 (1) 64bitでのvbpファイル ○「system32」を「SysWOW64」に変更する。 Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation ○「#2.1#0」を「#2.0#0」に変更する。 Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX (2) 64bitのfrmファイル ○「#2.1#0」を「#2.0#0」に変更する。 Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX" 4 この投稿について なぜ32bitと64bitでこのような現象になるのか原因はつかめていません。ただ、Win7(64bit)でVB6の新規プロジェクトを作ってMSCOMCTL.OCXのコンポーネントを追加すると、前項(1)と(2)のようにファイルが作られるのでそれに倣ったらロードできたということです。 仮に本投稿と異なって書いた場合、「ヘッダーが読めません。」などというエラーが出て先に進めないだけでした。 Formが多数あったり、頻繁に32bitと64bit間をコピーする場合があるので、上記ファイルの問題箇所を変更するプログラムで相当数テストしましたが、ファイルなどが破壊されるなどの障害はありませんでした。ただし、あくまでも自己責任でお願いします。
|