从 64 位应用程序在 64 位 Windows 上 pinvoke user32.dll 是否错误?我已经成功地完成了很多次并且从未出现过错误,但这似乎是矛盾的。我应该寻找 user64.dll 吗?
问问题
24343 次
2 回答
35
这个名字user32.dll
具有误导性。user32.dll
这是您正在调用的 64 位版本。64 位版本位于%windir%\System32\user32.dll
.
包含 32 位版本以与 32 位应用程序兼容。它位于%windir%\SysWOW64\user32.dll
。dumpbin
您可以使用该实用程序检查它们:
System32\user32.dll:
FILE HEADER VALUES
8664 machine (x64)
SysWOW64\user32.dll:
FILE HEADER VALUES
14C machine (x86)
于 2009-10-08T22:01:36.133 回答
1
由于您刚刚描述的完全相同的原因,没有 user64.dll,.NET 程序可能与 CPU 架构无关,因此相同的代码需要在 x86 和 x64 上工作。
如果你把你的程序带到 x86 平台,它仍然可以运行而无需任何修改。
我猜当他们命名 user32.dll 时,他们并没有考虑到这些场景。
于 2009-10-08T22:06:04.847 回答