64ビットアプリから64ビットWindowsでuser32.dllをピンボークするのは間違っていますか?私はこれを何度も成功させ、エラーは発生しませんでしたが、矛盾しているようです。代わりにuser64.dllを探す必要がありますか?
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)
今説明したのとまったく同じ理由でuser64.dllはありません。netプログラムはCPUアーキテクチャに依存しない可能性があるため、同じコードがx86とx64で機能する必要があります。
プログラムをx86プラットフォームに移行しても、変更を加えなくても実行できます。
user32.dllという名前を付けたとき、それらのシナリオを念頭に置いていなかったと思います。