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

Jam*_*add 26 c# 64-bit pinvoke 32-bit user32

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

Meh*_*ari 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)
Run Code Online (Sandbox Code Playgroud)

Syswow64资料\ user32.dll中:

FILE HEADER VALUES
         14C machine (x86)
Run Code Online (Sandbox Code Playgroud)

  • 一定要喜欢在64位窗口中仍然调用System32目录:-) (2认同)