다음을 통해 공유


64비트 애플리케이션

애플리케이션을 컴파일할 때 네이티브 애플리케이션으로 또는 WOW64(Windows 64비트 Windows 32비트)에서 Windows 64비트 운영 체제에서 실행되도록 지정할 수 있습니다. WOW64는 32비트 애플리케이션이 64비트 시스템에서 실행되도록 하는 호환성 환경입니다. WOW64는 Windows 운영 체제의 모든 64비트 버전에 포함되어 있습니다.

Windows에서 32비트 및 64비트 애플리케이션 실행

.NET Framework 4 이상 버전에서 빌드된 32비트 애플리케이션은 64비트 시스템의 WOW64에서 실행됩니다.

비고

x86 에뮬레이션 및 Itanium 프로세서 제품군용 WOW64 하위 시스템의 디자인으로 인해 애플리케이션은 하나의 프로세서에서 실행되도록 제한됩니다. 이러한 요인은 Itanium 기반 시스템에서 실행되는 32비트 .NET 애플리케이션의 성능과 확장성을 감소시킵니다. 성능 및 확장성을 높이기 위해 Itanium 기반 시스템에 대한 네이티브 64비트 지원을 포함하는 .NET Framework 4 이상을 사용하는 것이 좋습니다.

기본적으로 64비트 Windows 운영 체제에서 64비트 관리형 애플리케이션을 실행하는 경우 2GB 이하의 개체를 만들 수 있습니다. 그러나 .NET Framework 4.5 이상에서는 이 제한을 늘릴 수 있습니다. 자세한 내용은 <gcAllowVeryLargeObjects 요소를 참조하세요>.

많은 어셈블리가 32비트 CLR과 64비트 CLR 모두에서 동일하게 실행됩니다. 그러나 일부 프로그램은 다음 중 하나 이상을 포함하는 경우 CLR에 따라 다르게 동작할 수 있습니다.

  • 플랫폼(예: 포인터 형식)에 따라 크기를 변경하는 멤버를 포함하는 구조체입니다.
  • 상수 크기를 포함하는 포인터 산술 연산입니다.
  • 핸들에 대해 Int32 대신 IntPtr를 사용하는 잘못된 플랫폼 호출 또는 COM 선언.
  • IntPtrInt32로 캐스팅하는 코드입니다.

64비트 CLR에서 실행할 32비트 애플리케이션을 포팅하는 방법에 대한 자세한 내용은 32비트 관리 코드를 64비트로 마이그레이션을 참조하세요.

일반 64비트 프로그래밍 정보

64비트 프로그래밍에 대한 일반적인 내용은 다음 문서를 참조하세요.

64비트 애플리케이션 만들기를 위한 컴파일러 지원

기본적으로 .NET을 사용하여 32비트 또는 64비트 컴퓨터에서 애플리케이션을 빌드하는 경우 애플리케이션은 64비트 컴퓨터에서 원시 애플리케이션으로 실행됩니다(WOW64가 아님). 다음 표에서는 Visual Studio 컴파일러를 사용하여 WOW64 또는 둘 다에서 네이티브로 실행되는 64비트 애플리케이션을 만드는 방법을 설명하는 문서를 나열합니다.

컴파일러 컴파일러 옵션
Visual Basic (비주얼 베이직 언어) -platform(Visual Basic)
Visual C# -platform(C# 컴파일러 옵션)
Visual C++ /clr:safe를 사용하여 플랫폼에 구애받지 않은 CIL(공용 중간 언어) 애플리케이션을 만들 수 있습니다. 자세한 내용은 -clr(공용 언어 런타임 컴파일)을 참조하세요.

Visual C++에는 각 64비트 운영 체제에 대한 별도의 컴파일러가 포함되어 있습니다. Visual C++를 사용하여 64비트 Windows 운영 체제에서 실행되는 네이티브 애플리케이션을 만드는 방법에 대한 자세한 내용은 64비트 프로그래밍을 참조하세요.

.exe 파일 또는 .dll 파일의 상태 확인

.exe 파일 또는 .dll 파일이 특정 플랫폼에서만 실행되는지 또는 WOW64에서만 실행할 것인지 확인하려면 옵션 없이 CorFlags.exe(CorFlags 변환 도구) 를 사용합니다. CorFlags.exe 사용하여 .exe 파일 또는 .dll 파일의 플랫폼 상태를 변경할 수도 있습니다. Visual Studio 어셈블리의 CLR 헤더에는 주 런타임 버전 번호가 2로 설정되고 부 런타임 버전 번호가 5로 설정됩니다. 부 런타임 버전이 0으로 설정된 애플리케이션은 레거시 애플리케이션으로 처리되며 항상 WOW64에서 실행됩니다.

프로그래밍 방식으로 .exe 또는 .dll 쿼리하여 특정 플랫폼 또는 WOW64에서만 실행되도록 했는지 확인하려면 이 메서드를 Module.GetPEKind 사용합니다.