C#P在64位系统上调用user32.dll

时间:2009-10-08 22:00:10

标签: c# 64-bit pinvoke 32-bit user32

在64位应用程序中,在64位Windows上pingvuser32是不是错误?我成功完成了很多次并且从未出现过错误,但这似乎是矛盾的。我应该寻找user64.dll吗?

2 个答案:

答案 0 :(得分:32)

名称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)

答案 1 :(得分:1)

没有user64.dll与你刚才描述的完全相同的原因,.net程序可以与cpu架构无关,所以相同的代码需要在x86和x64上工作。
如果您将程序带到x86平台,它仍然可以在没有任何修改的情况下运行 我想当他们命名为user32.dll时,他们没有考虑到这些情况。