기준: Visual Studio 2008 Professional KOR.
C++ Win32 프로젝트를 추가하면 기본적으로 32비트 환경으로 Debug/Release가 생깁니다.
기존에 있는 Win32용 빌드 구성을 이용해서 x64용으로 구성을 복사할 수 있다.
'Hello64 프로젝트'로 64비트 환경 구축하기
Win32 콘솔 애플리케이션 프로젝트를 생성해서 64비트용으로 빌드를 해보겠다.
우선 VS2008을 실행하고, 새 프로젝트에서 Win32 콘솔 응용 프로그램을 생성한다.
이미 익숙하다고 가정하고 스크린샷을 붙인다.
'빈 프로젝트'를 선택한다.
간단하게 cpp파일을 추가하고 main()함수를 타이핑합니다.
빌드를 해보면 별다른 성공해야 합니다.
기존 프로젝트에 솔루션 플랫폼 도구모음에 보면 기본적으로 Win32용으로 선택된 플랫폼이 있습니다.
"구성 관리자..." (Configuration Manger) 를 선택하면 아래와 같은 창이 나옵니다.
"새로 만들기..." (New...) 를 선택해서 '새 플랫폼 입력 또는 선택' (Type or select the new plaform:)에서 x64를 선택하고
다음 나오는 창에서 '새 플랫폼 입력 또는 선택'에서 X64를 선택해 줍니다.
이후에 보면 기존의 'Win32'이외에 x64가 있습니다. 선택하고 빌드를 해봅니다.
출력되는 경로는 [프로젝트 경로]\x64 폴더 아래에 Debug 혹은 Release 폴더가 생긴다.
아래 그림은 Release로 빌드를 했다.
32비트로 빌드한 것과 비교해본다.(위: 64비트 / 아래: 32비트)
아래 부분에서 선택한 영역은 'IMAGE_NT_HEADER' 영역의 시작부분인 Machine이다. (winnt.h에 정의되어 있다)
typedef struct _IMAGE_FILE_HEADER {
WORD Machine;
WORD NumberOfSections;
DWORD TimeDateStamp;
DWORD PointerToSymbolTable;
DWORD NumberOfSymbols;
WORD SizeOfOptionalHeader;
WORD Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
WinNT.h에 있는 매크로의 정의를 보면 다음과 같다. (리틀엔디안이라 Byte order가 다르다)
#define IMAGE_FILE_MACHINE_I386 0x014c // Intel 386.
...
#define IMAGE_FILE_MACHINE_AMD64 0x8664 // AMD64 (K8)
...
참고(PE)
IMAGE_NT_HEADER는 IMAGE_NT_HEADERS의 서브셋(부분집합)이다.
IMAGE_NT_HEADERS는 크게 3가지 타입이 있는데 IMAGE_NT_HEADERS64, IMAGE_NT_HEADERS32, IMAGE_ROM_HEADERS 이다.
3가지의 차이는 앞부분 PE시그너처랑 는 동일하고 뒷부분의 OptionalHeader 만 다르다.
typedef struct _IMAGE_NT_HEADERS {
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
{IMAGE_OPTIONAL_HEADER64 or IMAGE_NT_HEADERS32 or IMAGE_ROM_HEADERS} OptionalHeader;
} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;
IMAGE_FILE_HEADER 바로 전에 PE시그너처가 있는데 '50 45 00 00'이 바로 그것이다. (아래는 리틀엔디안 표현이라서 순서가 바뀌어져있다)
#define IMAGE_NT_SIGNATURE 0x00004550 // PE00
참고(엔디안)
빅 엔디안: 높은 자리수를 먼저 저장(모토롤라 계열) - 사람이 읽기에 편함
리틀 엔디안: 낮은 자리수를 먼저 저장(인텔 계열) - 기계가 연산시에 편리(캐리지가 발생시 -> 방향으로 진행 가능)
'비주을스튜디오 Tip' 카테고리의 다른 글
vs2008 배포 프로젝트 만들기 (0) | 2012.10.31 |
---|---|
VS 2008 에서 빌드한 실행파일이 다른 컴터에서 실행이 안될때 (0) | 2012.10.31 |
비주얼 스튜디오 2011 프리뷰 (0) | 2012.10.31 |
Visual Studio 2012 평가판 소프트웨어 및 언어 팩 (0) | 2012.10.31 |
visual studio 글씨체 (0) | 2012.10.31 |