0

我有一个问题,我在编译程序时遇到运行时错误。这在开发环境(x86)中可以正常工作,但在生产环境(x64)中不行。

我找到了这篇文章,这似乎暗示将软件编译为 Any CPU 可以将软件作为 x64 软件运行,如果它运行在 64 位环境中。

是这样吗?如果是这样,软件是否应该在任何 CPU 下编译(因为这似乎会导致两个环境之间不匹配)?

4

1 回答 1

2

如果您只使用托管代码,AnyCPU 就很棒。托管代码可以在 32 位进程或 64 位进程中执行。对于 AnyCPU,框架选择操作系统的原生位数。

对于非托管代码,情况并非如此。它需要编译为 32 位或 64 位代码。当然,由于 WoW64 子系统,64 位 Windows 可以运行 64 位进程。

但 64 位进程无法加载 32 位模块(DLL、OCX 等)。

这意味着如果您的程序使用某种非托管模块,最好确保手动设置位数,以便所有组件具有相同的位数。

于 2011-02-25T15:06:41.483 回答