【发布时间】:2015-04-01 12:55:23
【问题描述】:
我有一个包含 C# 和托管 C++ 项目的解决方案。 它在解决方案平台 x64 和 x86 中编译。由于它是托管 C++,我想创建一个“任何 CPU”解决方案并摆脱旧的解决方案。
我将 C++ 项目链接器设置更改为 Force Safe IL Image for both x64 和 x86。
接下来,我使用配置管理器创建了一个名为“Any CPU”的新解决方案平台。接下来,我添加了一个项目平台,也称为“Any CPU”。
我继续将所有 C# 项目设置为“任何 CPU”,但对于 C++,我不能这样做。项目平台“Any CPU”不在下拉列表中,也没有“New...”选项。
VS 对它很满意,所以我保持原样并开始构建。令我惊讶的是,结果 DLL(来自 C++ 项目)是 MSIL,即使 C++ 的平台是 x64。编译 x32 时也会发生同样的情况,生成的 DLL 在 MSIL 中。
什么给了? 为什么我不能将 C++ 项目设置为“任何 CPU”?
【问题讨论】:
-
Managed C++ and AnyCPU 的可能重复项
-
我不这么认为,因为 C++ 项目生成的 DLL 是 MSIL。所以没有必要在加载 x64 或 x86 时做“奇怪”的事情。我只是不明白为什么我无法将托管 C++ 编译为“任何 CPU”(在配置中)
-
试图解释特定平台名称是完全当您构建代码时,您知道,在任何平台上运行是一项从未完成的艰巨任务。唯一重要的是 EXE 项目中的抖动覆盖。
-
@ChristopherPainter:这不是该帖子的副本。您建议作为副本的一个是讨论特定于平台的 C++/CLI DLL 的使用,根据平台自动选择。在这里,OP 想要一个与 C#“AnyCPU”程序集具有相同特征的 C++/CLI DLL 程序集。 IE。可以在任何平台上运行的单个程序集。