現在 P/Invoke を利用する .NET アプリケーション(以下AP1)と通常の .NETアプリケーション(以下AP2)を作成しています。
これらのアプリケーションは Windows XP や Windows 7 などで動く必要があり、現在はx86だけサポートしますが、
将来的にx64もサポートしなければなりません。
P/Invoke する対象のネイティブDLLは、x64版、x86版ともに提供されています。
そこで質問なんですが、正しい.NETアプリケーションのTargetCPUとネイティブDLLの組み合わせ、
その時の動作プロセスを教えて下さい。
自分では以下のような組み合わせであれば動作するのではないかと考えています。
- x86版OS→すべて32bitプロセス
- TargetCPU:AnyCPUでビルドした AP1 + x86版ネイティブDLL
- TargetCPU:x86でビルドした AP1 + x86版ネイティブDLL
- TargetCPU:AnyCPUでビルドした AP2
- TargetCPU:x86でビルドした AP2
- x64版OS→WOW64で動作する32bitプロセスまたは64bitプロセス
- TargetCPU:AnyCPUでビルドした AP1 + x64版ネイティブDLL→64bitプロセス
- TargetCPU:x86でビルドした AP1 + x86版ネイティブDLL→WOW64で動作する32bitプロセス
- TargetCPU:x64でビルドした AP1 + x64版ネイティブDLL→64bitプロセス
- TargetCPU:AnyCPUでビルドした AP2→64bitプロセス
- TargetCPU:x86でビルドした AP2→WOW64で動作する32bitプロセス
- TargetCPU:x64でビルドした AP2→64bitプロセス