一个64位系统上C#PInvoking user32.dll中(C# PInvoking user3

2019-07-21 14:21发布

这是错误的的PInvoke user32.dll中的64位Windows,从64位应用程序? 我已经成功地做到了这一点很多次,从来没有一个错误,但它似乎是矛盾的。 我应该寻找user64.dll呢?

Answer 1:

该名user32.dll是一种误导。 这是64位版本的user32.dll你打电话。 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)


Answer 2:

没有user64.dll您刚才描述的,所以相同的代码需要在x86和x64工作.NET程序可以是不可知的CPU架构完全一样的原因。
如果你把你的程序在x86平台它仍然没有任何修改即可运行。
我想,当他们命名user32.dll中,他们没有考虑到这些情况。



文章来源: C# PInvoking user32.dll on a 64 bit system