¿Es incorrecto pinvoke user32.dll en Windows de 64 bits, desde una aplicación de 64 bits? He hecho esto con éxito varias veces y nunca he tenido un error, pero parece contradictorio. ¿Debería buscar user64.dll en su lugar?C# PInvitando user32.dll en un sistema de 64 bits
24
A
Respuesta
30
El nombre user32.dll
es engañoso. Es la versión de 64 bit de user32.dll
que está llamando. La versión de 64 bits se encuentra en %windir%\System32\user32.dll
.
Se incluye una versión de 32 bits para compatibilidad con aplicaciones de 32 bits. Se encuentra ubicado en %windir%\SysWOW64\user32.dll
. Puede inspeccionar usando la utilidad dumpbin
:
System32 \ user32.dll:
FILE HEADER VALUES
8664 machine (x64)
SysWOW64 \ user32.dll:
FILE HEADER VALUES
14C machine (x86)
0
No hay user64.dll por la misma razón exacta usted acaba de describir, el programa .net puede ser independiente de la arquitectura de la CPU, por lo que el mismo código debe funcionar en x86 y x64.
Si lleva su programa a la plataforma x86, seguirá ejecutándose sin modificaciones.
Supongo que cuando nombraron user32.dll no tenían esos escenarios en mente.
Cuestiones relacionadas
- 1. DllImport user32 vs user32.dll
- 2. Java Native Interface dll de 32 bits en el sistema de 64 bits
- 3. ¿Puedo cargar una DLL de 32 bits en un proceso de 64 bits en Windows?
- 4. NCover en el sistema de 64 bits
- 5. Llamar a LoadLibrary en un dll de 64 bits desde un proceso de 32 bits
- 6. ¿Aplicación de 32 bits o de 64 bits en el sistema operativo de 64 bits?
- 7. ¿Compila un programa C++ con solo dependencia de kernel32.dll y user32.dll?
- 8. ¿Por qué Windows 64 todavía hace uso de user32.dll, etc.?
- 9. ¿Puedo ejecutar un ensamblado C# (dll) como 32 bits desde una aplicación de 64 bits?
- 10. Formas de ajustar .dll de 32 bits para que funcione en un sistema operativo de 64 bits
- 11. ¿Cómo hago referencia a una DLL de 32 bits en un proyecto de 64 bits?
- 12. No se puede cargar .dll AMD de 64 bits en un IA plataforma de 32 bits
- 13. SendInput falla en 64 bits
- 14. Formas de acceder a una DLL de 32 bits desde un exe de 64 bits
- 15. wrap 32 bit dll para sistema operativo de 64 bits para trabajar con regsvr32.exe
- 16. Registrar DLL COM de 32 bits en Windows 7 de 64 bits
- 17. C Alineación de punteros de 64 bits
- 18. dll de 32 bits en Office 64 bit
- 19. Utilizando una DLL de 32 bits en un proceso de 64 bits a través de COM
- 20. ¿Cómo compilar un programa C++ como de 64 bits en una máquina de 64 bits?
- 21. ¿Por qué __sync_add_and_fetch funciona para una variable de 64 bits en un sistema de 32 bits?
- 22. ¿P/Invoke en ventanas de 64 bits requiere firmas diferentes que en 32 bits?
- 23. Una advertencia con DLL de 64 bits edificio
- 24. Ejecución de una aplicación AnyCPU como de 32 bits en un sistema operativo de 64 bits
- 25. Crear un contenedor administrado para DLL no administrado de 32 bits y 64 bits
- 26. Compilación de sistema de 64 bits para el sistema de 32 bits - la compatibilidad
- 27. ¿Puede un enlace EXE de 64 bits contra archivos DLL de 32 bits?
- 28. Error de enlace 2001 al vincular a User32.dll
- 29. Importar archivos dll externos basados en sistemas operativos de 64 bits o 32 bits
- 30. ¿Es posible acceder a un dll de 64 bits desde una aplicación de 32 bits?
Es engañoso ahora, pero originalmente fue nombrado para diferenciar entre 16 y 32 bits, ¿no? Pero difícilmente pueden cambiar el nombre, eso rompería muchas cosas ... –
Sí. Recuerdo claramente las fallas de protección general causadas por "USER.EXE" en Windows 3.1 en mi infancia. –
Me encanta cómo se llama todavía al directorio System32 en Windows de 64 bits :-) – Justin