为什么在Windows x64上IntPtr.size为4?

Ada*_*Lee 18 c# pinvoke

我想当我使用IntPtr.Size时我应该得到8.但是我仍然使用Widnows 7 x64在x64机器上获得4个,为什么?

Bar*_*cik 21

检查你的文件CPU架构,是x86吗?它应该是CPU any/64bit


Dav*_*nan 16

64位操作系统实现了一个名为WOW64的模拟环境,它模拟32位Windows环境.您正在构建针对x86的程序,即32位.这意味着您的进程作为32位进程在模拟器下运行,当然指针是4字节宽.

如果将选项更改为目标x64或AnyCPU,则当进程在64位系统上运行时,指针大小将为8个字节.


dot*_*NET 13

除了上面的答案,即使您选择了任何CPU架构,VS2013在项目属性中都有一个名为"Prefer 32-bit"的新选项.您必须在64位开发计算机上将其关闭才能获得IntPtr.Size = 8.