我正在使用本机 C++ 创建 DirectX 应用程序,并使用 C++/CLI 来促进 IPC 与 C# 应用程序。
但是,在构建整个解决方案时;我对如何使系统在 x86 和 x64 CPU 架构下工作,同时仍保持尽可能高的性能感到困惑。
我对(并希望避免)任何形式的仿真(例如 WoW32/64)保持警惕。
当然,我可以使用 AnyCPU 编译 C# 项目。但是,我将 C++ 输出编译为什么?
我只是编译两个单独的版本吗?一个用于 x86,一个用于 x64?
谢谢
我正在使用本机 C++ 创建 DirectX 应用程序,并使用 C++/CLI 来促进 IPC 与 C# 应用程序。
但是,在构建整个解决方案时;我对如何使系统在 x86 和 x64 CPU 架构下工作,同时仍保持尽可能高的性能感到困惑。
我对(并希望避免)任何形式的仿真(例如 WoW32/64)保持警惕。
当然,我可以使用 AnyCPU 编译 C# 项目。但是,我将 C++ 输出编译为什么?
我只是编译两个单独的版本吗?一个用于 x86,一个用于 x64?
谢谢
您应该进行 2 个单独的构建。
AnyCPU 意味着托管代码将在 32 位架构上以 32 位执行,在 64 位架构上以 64 位执行(JIT 负责处理)。请参见此处:Visual Studio“任何 CPU”目标是什么意思?
但是由于您有非托管代码,因此您需要有 2 个不同的 dll 用于 32 位版本和 64 位版本。因此,除非您通过检测它确实是哪种架构来选择要加载的非托管 dll和要在运行时使用的包装器(我不确定您实际上是否可以),否则您需要进行 2 个单独的构建。