■49885 / inTopicNo.3) |
Re[1]: 現行アプリを64bit環境で動作させるには? |
□投稿者/ 魔界の仮面弁士 (1655回)-(2010/05/21(Fri) 13:33:37)
|
2010/05/21(Fri) 14:03:47 編集(投稿者)
■No49882 (ろほ さん) に返信 > ・Access(mdb) Microsoft からは、Jet 用の 64bit 用プロバイダが提供されていなかったはずです。 そのため、Microsoft.JET.OLEDB.4.0/3.51 を使って mdb へアクセスする場合には あらかじめ x86 としてビルドしておく必要があります。
なお、ACE 用のものであれば、Office 2010(X64版) にて提供されます。 (64bit用の Microsoft.ACE.OLEDB.12.0)
> 表題の通り「64bit環境で動作させるには?」 Any CPU としてビルドしていた場合、64bit環境で動作させれば そのまま 64bit アプリとして動作します。
一方、x86 としてビルドしていた場合は、32bit 環境でも 64bit 環境でも 32bit アプリとして動作します(64bit 環境では WOW64 で動作)。 また、X64 としてビルドした場合には 64bit 専用アプリとなります。
なお、Visual Studio 2005, 2008, 2010 の Express Edition を 利用していた場合、Any CPU 固定となりますので注意してください。 http://msdn.microsoft.com/ja-jp/library/5b4eyb0k.aspx (<PlatformTarget> タグを直接編集すれば、x86 でビルドさせる事も可能)
> その他(外部ツール、参照設定等) それらのライブラリが、64bit対応しているかどうかを個別に調べてみてください。 その状況によって対策が異なってくるでしょう。
・64bit対応版が無いため、x86 としてビルドし、32bitのまま動作させる。 ・64bit対応版はあるが、32bit版とは互換性が無いため、再コーディングが必要。 ・32bit/64bit 両対応のため、特に何もする必要が無い。
このほか、アンマネージの API を利用している場合にも注意してください。 Win64 ではポインタが64ビット長となります。なので、IntPtr.ToInt32 を 無条件で使っているところがあれば、判定処理を追加する必要があるでしょう。 また、Int32 型として宣言された引数があった場合、それが Int32 のままで 良いのか IntPtr にすべきなのかも確認しておいてください。
> ・JiveReport(帳票作成ツール) X64 版が存在します。ただし、x86版JiveReportと同じ環境では使用できません。
> ・LHA.EXE , Unlha32.dll(バックアップデータの圧縮・解凍) LHA.EXE 自体は 16bit コンソールアプリです。64bit 環境では動作しません。
Unlha32.dll は 32bit ライブラリです。64bit 環境では WOW64 で動作させてください。 64bit 版ライブラリも公開予定…という話が以前ありましたが、まだのようですね。
> ・clslib.dll(前々任者?がVB2005で作成の開発用クラス集) 特に指定が無ければ、Any CPU としてコンパイルされているはずです。 なので、64bit 環境では 64bit ライブラリとして動作することになると予想。
|
|