x64のWindowsを扱う上で知っておくべき事 †
x86・x64OSでの32bit、64bitアプリケーションの動作 †
- 32bitWindows
- 64bitWindows
- 32、64bitのアプリケーションを実行出来る
- 32bitのアプリケーションはWOW64と言うエミュレーションレイヤ上で実行される
x64 Windowsにおける、32bit、64bitのDLLの関係 †
- 32bitのアプリケーションから64bitのDLLは使用出来ない
- 同様に、64bitのアプリケーションから32bitのDLLは使用出来ない
- 例えば、プラグインを扱える32bitのアプリケーションが64bitに対応した場合
- 今まで使用されていた32bitのプラグインは使用出来ないので、64bitに対応するのを待つ必要がある
- 逆に、プラグインが64bitに対応しても、それを扱うソフトが32bitのままでは使用出来ない
- ソフトが64bitに対応しないと、プラグイン作者もどうしようもないと言う事
System32とSysWOW64 †
- 32bit Windowsの場合、システムで使用するDLL等は基本的にSystem32に入っている
- 64bit Windowsの場合はどうか?
- System64と言うディレクトリは存在せず、System32に64bit版のDLLが入っている
- 32bit版のDLLはどうする?
- 32bitのアプリケーションが動作し、System32を参照した場合、SysWOW64にリダイレクトされるようになっている
- つまり、32bit版のDLLは、SysWOW64に入っている
- 32と名称が付くと混乱する名称変えなかったのはなぜ?
- 開発者は32bit版と64bit版をコンパイルする場合、通常はコンパイルオプションを
変更することで対応する
- 32bit版と64bit版のソースコードを二重管理するのは面倒だし、バグを発生させるから
- コンパイルする際にはSystem32のいくつかのDLLを参照している32、64によってリンク先を変えると混乱するため、名称はそのままにしている
- kernel32.dllなども、名称は32になっているが、x64版に入っているのは64bit版