1

我正在使用本机 C++ 创建 DirectX 应用程序,并使用 C++/CLI 来促进 IPC 与 C# 应用程序。

但是,在构建整个解决方案时;我对如何使系统在 x86 和 x64 CPU 架构下工作,同时仍保持尽可能高的性能感到困惑。

我对(并希望避免)任何形式的仿真(例如 WoW32/64)保持警惕。

当然,我可以使用 AnyCPU 编译 C# 项目。但是,我将 C++ 输出编译为什么?

我只是编译两个单独的版本吗?一个用于 x86,一个用于 x64?

谢谢

4

1 回答 1

3

您应该进行 2 个单独的构建。

AnyCPU 意味着托管代码将在 32 位架构上以 32 位执行,在 64 位架构上以 64 位执行(JIT 负责处理)。请参见此处:Visual Studio“任何 CPU”目标是什么意思?

但是由于您有非托管代码,因此您需要有 2 个不同的 dll 用于 32 位版本和 64 位版本。因此,除非您通过检测它确实是哪种架构来选择要加载的非托管 dll和要在运行时使用的包装器(我不确定您实际上是否可以),否则您需要进行 2 个单独的构建。

于 2013-08-11T17:39:33.257 回答