.NET AnyCPU
32:32で動く
64:64で動く
.NET x86
32:32で動く
64:32で動く(WOW)
.NET x64
32:動かない
64:64で動く
.NET AnyCPUからActiveX(32bit)を参照設定で呼ぶ
32:32で動く
64:動かない
.NET AnyCPUからJ#ライブラリを使う
32:32で動く
64:動かない(32bitライブラリしかないから)
.NET AnyCPUからC++/CLI(32bit)を参照設定で呼ぶ
32:32で動く
64:動かない
.NET AnyCPUからC++/CLI(64bit)を参照設定で呼ぶ
32:動かない
64:64で動く
.NET x86CPUからC++/CLI(32bit)を参照設定で呼ぶ
32:32で動く
64:32で動く(WOW)
.NET x64CPUからC++/CLI(64bit)を参照設定で呼ぶ
32:動かない
64:64で動く
なので、C++/CLIの場合にはコンパイル環境をいじって、.NET側のアセンブリも32bit用64bit用2つの環境を出力する必要があります。
インストーラはもちろん、各CPU別に作成しなくてはいけないのでそのように作る。
ActiveXの場合には32bitと64bitでUUIDを変えなくてはいけないので、両方を提供した上でラッパもそれぞれのCPU別に用意されるのが望ましい。
さらにそれをラップするAnyCPUラッパを作って動的アセンブリロードすればたぶんCPU別に参照設定を切り替えなくてもいけると思う。
Windows Server 2008の次はx64版しか出ないことに注目。もう5年後のことです。