Aplicaciones de 64 bits64-bit Applications

Al compilar una aplicación, puede especificar que debe ejecutarse en un sistema operativo Windows de 64 bits como una aplicación nativa o bajo WOW64 (Windows de 32 bits en Windows de 64 bits).When you compile an application, you can specify that it should run on a Windows 64-bit operating system either as a native application or under WOW64 (Windows 32-bit on Windows 64-bit). WOW64 es un entorno de compatibilidad que permite a una aplicación de 32 bits ejecutarse en un sistema de 64 bits.WOW64 is a compatibility environment that enables a 32-bit application to run on a 64-bit system. WOW64 se incluye en todas las versiones de 64 bits del sistema operativo Windows.WOW64 is included in all 64-bit versions of the Windows operating system.

Ejecutar en Windows aplicaciones de 32 bits frente a aplicaciones de 64 bitsRunning 32-bit vs. 64-bit Applications on Windows

Todas las aplicaciones compiladas con .NET Framework 1.0 o 1.1 se tratan como aplicaciones de 32 bits en un sistema operativo de 64 bits y siempre se ejecutan bajo WOW64 y el Common Language Runtime (CLR) de 32 bits.All applications that are built on the .NET Framework 1.0 or 1.1 are treated as 32-bit applications on a 64-bit operating system and are always executed under WOW64 and the 32-bit common language runtime (CLR). Las aplicaciones de 32 bits que se compilan en .NET Framework 4.NET Framework 4 o versiones posteriores también se ejecutan bajo WOW64 en sistemas de 64 bits.32-bit applications that are built on the .NET Framework 4.NET Framework 4 or later versions also run under WOW64 on 64-bit systems.

Visual Studio instala la versión de 32 bits de CLR en un equipo x86, y la versión de 32 bits y la versión de 64 bits apropiada de CLR en un equipo Windows de 64 bits.Visual Studio installs the 32-bit version of the CLR on an x86 computer, and both the 32-bit version and the appropriate 64-bit version of the CLR on a 64-bit Windows computer. (Dado que Visual Studio es una aplicación de 32 bits, cuando se instala en un sistema de 64 bits, se ejecuta bajo WOW64).(Because Visual Studio is a 32-bit application, when it is installed on a 64-bit system, it runs under WOW64.)

Nota

Debido al diseño de emulación de x86 y al subsistema de WOW64 para la familia de procesadores Itanium, la ejecución de las aplicaciones está restringida a un único procesador.Because of the design of x86 emulation and the WOW64 subsystem for the Itanium processor family, applications are restricted to execution on one processor. Estos factores reducen el rendimiento y la escalabilidad de las aplicaciones de 32 bits de .NET Framework que se ejecutan en sistemas basados en Itanium.These factors reduce the performance and scalability of 32-bit .NET Framework applications that run on Itanium-based systems. Se recomienda usar .NET Framework 4.NET Framework 4, que incluye compatibilidad nativa con 64 bits para sistemas basados en Itanium, para un mayor rendimiento y escalabilidad.We recommend that you use the .NET Framework 4.NET Framework 4, which includes native 64-bit support for Itanium-based systems, for increased performance and scalability.

De forma predeterminada, cuando ejecute una aplicación administrada de 64 bits en un sistema operativo Windows de 64 bits, puede crear un objeto de no más de 2 gigabytes (GB).By default, when you run a 64-bit managed application on a 64-bit Windows operating system, you can create an object of no more than 2 gigabytes (GB). Sin embargo, en .NET Framework 4.5.NET Framework 4.5, puede aumentar este límite.However, in the .NET Framework 4.5.NET Framework 4.5, you can increase this limit. Para más información, consulte Elemento <gcAllowVeryLargeObjects>.For more information, see the <gcAllowVeryLargeObjects> element.

Muchos ensamblados se ejecutan de forma idéntica en el CLR de 32 bits y el CLR de 64 bits.Many assemblies run identically on both the 32-bit CLR and the 64-bit CLR. Sin embargo, algunos programas pueden comportarse de manera diferente, dependiendo de CLR, si contienen uno o varios de los elementos siguientes:However, some programs may behave differently, depending on the CLR, if they contain one or more of the following:

  • Estructuras que contengan miembros cuyo tamaño varía según la plataforma, (por ejemplo, cualquier tipo de puntero).Structures that contain members that change size depending on the platform (for example, any pointer type).

  • Aritmética de punteros que incluya tamaños constantes.Pointer arithmetic that includes constant sizes.

  • Invocación incorrecta de la plataforma o declaraciones COM que utilicen Int32 para los controladores en lugar de IntPtr.Incorrect platform invoke or COM declarations that use Int32 for handles instead of IntPtr.

  • Código que convierte IntPtr en Int32.Code that casts IntPtr to Int32.

Para más información sobre cómo migrar una aplicación de 32 bits para que se ejecute en CLR de 64 bits, vea Migrating 32-bit Managed Code to 64-bit (Migración de código administrado de 32 bits a 64 bits).For more information about how to port a 32-bit application to run on the 64-bit CLR, see Migrating 32-bit Managed Code to 64-bit.

Información general de programación de 64 bitsGeneral 64-Bit Programming Information

Para obtener información general sobre la programación de 64 bits, vea los siguientes documentos:For general information about 64-bit programming, see the following documents:

Compatibilidad del compilador para crear aplicaciones de 64 bitsCompiler Support for Creating 64-Bit Applications

De forma predeterminada, cuando se usa .NET Framework para compilar una aplicación en un equipo de 32 o 64 bits, la aplicación se ejecutará en un equipo de 64 bits como una aplicación nativa (es decir, no bajo WOW64).By default, when you use the .NET Framework to build an application on either a 32-bit or a 64-bit computer, the application will run on a 64-bit computer as a native application (that is, not under WOW64). En la tabla siguiente se enumeran los documentos que explican cómo usar los compiladores de Visual Studio para crear aplicaciones de 64 bits que se ejecuten como nativas, bajo WOW64, o en ambas situaciones.The following table lists documents that explain how to use Visual Studio compilers to create 64-bit applications that will run as native, under WOW64, or both.

CompiladorCompiler Opción del compiladorCompiler option
Visual BasicVisual Basic /platform (Visual Basic)/platform (Visual Basic)
Visual C#Visual C# /platform (opciones del compilador de C#)/platform (C# Compiler Options)
Visual C++Visual C++ Puede crear aplicaciones del Lenguaje Intermedio de Microsoft (MSIL) independientes de la plataforma utilizando /clr:safe.You can create platform-agnostic, Microsoft intermediate language (MSIL) applications by using /clr:safe. Para obtener más información, consulte /clr (Compilación de Common Language Runtime).For more information, see /clr (Common Language Runtime Compilation).

Visual C++ incluye un compilador independiente para cada sistema operativo de 64 bits.Visual C++ includes a separate compiler for each 64-bit operating system. Para más información sobre cómo utilizar Visual C++ para crear aplicaciones nativas que se ejecuten en un sistema operativo Windows de 64 bits, vea Programación de 64 bits con Visual C++.For more information about how to use Visual C++ to create native applications that run on a 64-bit Windows operating system, see 64-bit Programming.

Determinar el estado de un archivo .exe o .dllDetermining the Status of an .exe File or .dll File

Para determinar si un archivo .exe o .dll está diseñado para que se ejecute solo en una plataforma específica o bajo WOW64, use CorFlags.exe (herramienta de conversión CorFlags) sin ninguna opción.To determine whether an .exe file or .dll file is meant to run only on a specific platform or under WOW64, use CorFlags.exe (CorFlags Conversion Tool) with no options. También puede usar CorFlags.exe para cambiar el estado de la plataforma de un archivo .exe o .dll.You can also use CorFlags.exe to change the platform status of an .exe file or .dll file. El encabezado CLR de un ensamblado de Visual Studio tiene el número principal de versión de runtime establecido en 2 y el número secundario de versión de runtime establecido en 5.The CLR header of a Visual Studio assembly has the major runtime version number set to 2 and the minor runtime version number set to 5. Las aplicaciones que tienen el número secundario de versión de runtime establecido en 0 se tratan como aplicaciones heredadas y siempre se ejecutan bajo WOW64.Applications that have the minor runtime version set to 0 are treated as legacy applications and are always executed under WOW64.

Para comprobar mediante programación si un archivo .exe o .dll está diseñado para que se ejecute solo en una plataforma específica o bajo WOW64, utilice el método Module.GetPEKind.To programmatically query an .exe or .dll to see whether it is meant to run only on a specific platform or under WOW64, use the Module.GetPEKind method.