Question

Est-il tort de Pinvoke user32.dll sur 64 bits de Windows, à partir d'une application 64 bits? Je l'ai fait avec succès un certain nombre de fois et n'a jamais eu une erreur, mais il semble contradictoire. Dois-je chercher user64.dll à la place?

Était-ce utile?

La solution

Le user32.dll nom est trompeur. Il est la version 64 bits de user32.dll que vous appelez. La version 64 bits est située à %windir%\System32\user32.dll.

Une version 32 bits est inclus pour assurer la compatibilité avec les applications 32 bits. Il est situé à %windir%\SysWOW64\user32.dll. Vous pouvez les consulter à l'aide de l'utilitaire dumpbin:

System32 \ user32.dll:

FILE HEADER VALUES
        8664 machine (x64)

SysWOW64 \ user32.dll:

FILE HEADER VALUES
         14C machine (x86)

Autres conseils

Il n'y a pas user64.dll pour exactement la même raison que vous décrivez juste, programme .net peut être agnostique à l'architecture cpu, le même code doit fonctionner sur x86 et x64.
Si vous prenez votre programme pour la plate-forme x86, il continue à fonctionner sans aucune modification.
Je suppose que, quand ils ont appelé user32.dll ne pas avoir ces scénarios à l'esprit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top