2009/3/25 Wed

Anycpu

Filed under: プログラム — nico @ 12:29:08

昨夜は早速64bit環境で開発テストとかしてましたー。
ってゆーか、テストっつーか例のファイルコピーツールをデバック出来るか試してみたって感じなんですけどね。

で、いきなり出来なかったわけで。
世の中64bitで動く32bitアプリはフツーに出回ってるけど、作る側は多少気にしなきゃやっぱダメなんだなぁって話。

なんでダメだったかっつーと、結局は.NETビルド時の対象CPUの指定でダメになるって話だったワケですが。

VisualStudioでデフォルトで.NET関係のプロジェクト作ると、対象CPUが初期値で「Anycpu」設定になるんですが。
Anycpu設定だと、64bit OS上だと.NETが64bitモードで動作するようで。
具体的に言うと、IntPtrとかが64bit幅になるとか、ポインタサイズも同様とかそんな感じ。

件のファイルコピーツールはP/InvokeとかCOMとかでガンガンWin32 APIを叩いてる。
で、問題はその辺のCOMとかWin32 APIのポインタが(まだ正式に調査してるわけでないので、予測の範疇だけど)、サイズが32bitらしい。
まぁ、32APIだから当然なのかも知れんけど、その辺の境目とか調べないとなぁ・・・と。

とりあえず、ファイルコピーツールに関しては初期化時に例外吐いてダメでした。
一応、対象CPUの設定を「x86」にすれば問題なし。

そこに関しては調べたんだけど、対象CPUが「x86」ならば64bit OSでも.NETは32bitモードで動作するそうです。

んー・・・とりあえず、今後は.NETで開発するときはx86にするか、Anycpuで32bit/64bitで動作するようにキモに銘じとかないとなぁ。
とりあえず、MS公式の64bit関係の開発指針をメモ代わりにリンクしておくか(をい

コメント (0) »

この記事にはまだコメントがついていません。

コメント RSS トラックバック URL

コメントをどうぞ

Link Free. Copyright (C) 2005-2007 nico. All rights reserved.
HTML convert time: 0.549 sec. Powered by WordPress ME