我正在使用Windows 7和x64 cpu。 这是否意味着我应该始终在Visual Studio中使用“x64”选项进行编译?那么“dll”,我可以使用x64应用程序中的x86 dll吗?可能还有其他问题吗?
答案 0 :(得分:7)
This article包含每个选项的简要概述。
这是一个小小的引用:
默认设置Any CPU表示程序集将运行 目前正在运行的CPU本机上。意思是,它会运行 在64位计算机上为64位,在32位计算机上为32位。如果 从64位应用程序调用程序集,它将作为一个 64位汇编等等。
如果项目设置为x86,则表示该项目旨在 仅作为32位进程运行。 64位进程将无法调用 进入组件集X86。将项目设置为x86的原因 包括仅在可用的本机DLL上的依赖项 假设32位,32位或进行本机调用。应用和 标记为x86的程序集仍可在64位Windows上运行。然而 他们在WOW64下运行。 Visual Studio本身在此仿真下运行 模式,因为它是一个32位应用程序。
将项目设置为x64将指定程序集必须运行 在64位Windows下。试图在32位上运行程序集 Windows或从32位进程调用程序集将导致a 运行时错误。
答案 1 :(得分:4)
一般来说,您应该始终使用AnyCpu
。
如果您有特殊原因要求兼容性问题,那么您需要根据需要选择x86或x64。
如评论中所述,针对特定体系结构构建的dll可能需要您以某种方式构建程序集。当您需要时,这将是您想要做的事情,而不是其他。
答案 2 :(得分:2)
不...您编写代码的机器/编译/构建您的软件(EXE,DLL ...)与目标(x86 / x64 / Any)的问题没有任何关系。
如果您希望构建的结果在任何地方运行,请使用x86或AnyCPU。如果您希望结果仅在x64上运行,那么您可以使用x64。
在某些情况下,您必须使用x86或x64 - 即在您的项目中使用某些(第三方?)组件/库/ DLL / ActiveX等时仅32位(然后是x86)或仅仅64位(然后是x64)。
答案 3 :(得分:1)
AnyCPU
是我通常推荐的。您可以在this SO post深入讨论此问题。
唯一的问题是你不能倒退 - 你不能在x86应用程序中使用x64程序集。 AnyCPU
缓解了这一潜在的陷阱。