64비트 응용 프로그램

업데이트: 2010년 8월

응용 프로그램을 컴파일할 때 이 응용 프로그램이 Windows 64비트 운영 체제에서 네이티브 응용 프로그램으로 실행되거나 WOW64에서 실행되도록 지정할 수 있습니다. WOW64는 64비트 운영 체제에서 32비트 응용 프로그램을 실행할 수 있게 해 주는 호환성 환경입니다. WOW64는 시스템에 포함되어 있습니다.

설명

.NET Framework 버전 1.0 또는 1.1에서 빌드된 모든 응용 프로그램은 32비트 응용 프로그램으로 취급되며 64비트 운영 체제의 경우 항상 32비트 CLR(공용 언어 런타임)의 WOW64에서 실행됩니다. 또한 .NET Framework 버전 4에서 빌드된 32비트용 응용 프로그램도 64비트 시스템의 WOW64에서 실행됩니다.

Visual Studio에서는 x86 컴퓨터에 32비트 버전의 CLR을 설치하고 64비트 Windows 컴퓨터에는 32비트 버전과 해당하는 64비트 버전의 CLR을 모두 설치합니다. Visual Studio 2010은 32비트 응용 프로그램이므로 64비트 시스템에 이를 설치할 경우 WOW64에서 실행됩니다.

참고참고

Itanium 프로세서 제품군에 대한 WOW64 하위 시스템과 x86 에뮬레이션의 디자인 때문에 응용 프로그램은 한 프로세서에서만 실행하도록 제한됩니다.이러한 요소로 인해 Itanium 기반 시스템에서 실행되는 32비트 .NET Framework 응용 프로그램의 성능과 확장성이 저하됩니다..NET Framework 1.1을 사용하는 응용 프로그램은 로드가 많은 ASP.NET 응용 프로그램 같이 높은 성능과 확장성을 필요로 하는 응용 프로그램보다 대화형 클라이언트 응용 프로그램에 사용하는 것이 좋습니다.가능한 경우 성능과 확장성을 향상시키려면 Itanium 기반 시스템에 대한 네이티브 64비트 지원 기능이 포함된 .NET Framework 버전 4를 사용합니다.

64비트 Windows 운영 체제에서 관리되는 64비트 응용 프로그램을 실행할 경우 2GB보다 큰 개체를 만들 수 없습니다.

여러 어셈블리가 32비트 CLR과 64비트 CLR 모두에서 동일하게 실행됩니다. 그러나 일부 프로그램은 다음과 같은 이유 중 하나 이상에 해당하는 경우 CLR에서 다르게 동작할 수도 있습니다.

  • 포인터 형식처럼 플랫폼에 따라 크기가 달라지는 멤버를 포함하는 구조체

  • 상수 크기를 포함하는 포인터 산술

  • IntPtr 대신 Int32를 핸들로 사용하는 잘못된 플랫폼 호출 또는 COM 선언

  • IntPtrInt32로 캐스팅

32비트 응용 프로그램을 64비트 CLR에 이식하여 실행하는 방법에 대한 자세한 내용은 MSDN 웹 사이트의 Migrating 32-bit Managed Code to 64-bit를 참조하십시오.

64비트 프로그래밍 기본 정보

64비트 프로그래밍에 일반적인 내용은 다음 문서를 참조하십시오.

64비트 응용 프로그램 작성을 위한 컴파일러 지원

.NET Framework 2.0을 사용하여 32비트 또는 64비트 컴퓨터에서 응용 프로그램을 만들면 기본적으로 해당 응용 프로그램은 WOW64에서 실행되는 것이 아니라 64비트 컴퓨터에서 네이티브 응용 프로그램으로 실행됩니다. 다음 표에는 Visual Studio 컴파일러를 사용하여 네이티브 또는 WOW64로 실행하거나 두 가지 방식으로 모두 실행되는 64비트 응용 프로그램을 만드는 방법에 대해 설명하는 항목이 나와 있습니다.

컴파일러

컴파일러 옵션

Visual Basic

/platform(Visual Basic)

Visual C#

/platform(C# 컴파일러 옵션)

Visual C++

/clr:safe를 사용하여 플랫폼을 인식하지 않는 MSIL(Microsoft Intermediate Language) 응용 프로그램을 만들 수 있습니다. 자세한 내용은 /clr(공용 언어 런타임 컴파일)을 참조하십시오.

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

JScript

/platform(Visual Studio - JScript)

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

.exe 파일 또는 .dll 파일이 특정 플랫폼에서만 실행되는지 WOW64에서만 실행되는지 여부를 확인하려면 명령줄에서 corflags.exe를 사용합니다. corflags.exe를 사용하여 .exe 파일 또는 .dll 파일의 플랫폼 상태를 변경할 수도 있습니다. 자세한 내용은 CorFlags.exe(CorFlags 변환 도구)를 참조하십시오. Visual Studio 어셈블리의 CLR 헤더 또는 COM+ 런타임 헤더에서 주 런타임 버전 번호는 2로 설정되어 있고 부 런타임 버전 번호는 5(Visual Studio .NET 2003 어셈블리의 경우 0)로 설정되어 있습니다. 부 런타임 버전이 0으로 설정되어 있는 응용 프로그램은 레거시 응용 프로그램으로 취급되고 항상 WOW64에서 실행됩니다.

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

참고 항목

기타 리소스

Windows-Based Applications and Components

변경 기록

날짜

변경 내용

이유

2010년 8월

링크 및 버전 번호가 업데이트되었습니다.

향상된 기능 관련 정보