2013년 1월 21일 월요일

32비트 코드를 64비트로 변환(code conversion from 32-bit to 64-bit)

윈도우7이 인기를 끌면서 64비트 프로그래밍(64-bit programming)은 거스를 수 없는 대세가 되었다. 아래 정보를 확인해 이전에 짜둔 Visual Studio의 32비트 코드를 64비트로 바꾸어 보자.

[64비트용 솔루션 플랫폼(solution platform) 생성]
1. “구성 관리자 -> 활성 솔루션 플랫폼 -> 새로 만들기”에서 ‘x64’를 추가함

2. “활성 솔루션 구성”에 “Debug x64”, “Release x64”를 추가하고 플랫폼을 모두 ‘x64’로 바꿈: "활성 솔루션 플랫폼"을 'x64'로 바꾸면 모든 솔루션이 x64로 바꾸므로 플랫폼 항목만을 바꾸자.

현재 컴파일러가 64비트 모드에서 동작 중인지 확인하려면 '_WIN64' 정의 여부를 확인하면 된다. 이걸로 확인이 안된다면 "구성 속성 -> C/C++ -> 전처리기 -> 전처리기 정의"에 'WIN64'를 추가하면 해결된다.
한가지 조심할 것은 '_WIN32'이다. 이 정의는 32비트와 64비트 모두에서 사용되기 때문에 '_WIN32'를 이용해 32비트 유무를 판별해서는 안된다. 반드시 '_WIN64'를 써야 한다.

[데이터 변환]
  • int -> INT64, __int64, long long
  • long -> LONG64, __int64, long long
  • unsigned int -> UINT64, usigned __int64, unsigned long long
  • unsigned long -> ULONG64, usigned __int64, unsigned long long
  • INT_PTR, UINT_PTR, LONG_PTR, ULONG_PTR처럼 ..._PTR로 끝나는 변수는 컴파일러가 32비트 모드인지 64비트 모드인지에 따라 선언되는 변수 종류가 자동으로 달라짐
  • int 상수 1 -> 1i64
  • long 상수 1L -> 1LL
  • unsigned int 상수 1 -> 1ui64
  • unsigned long 상수 1UL -> 1ULL 

double에 대해서는 변경할 것이 없다. long double이든지 double이든지 컴파일러는 동일한 코드를 만든다.

[참고문헌]
Enhanced by Zemanta

댓글 4개 :

  1. 제가 컴퓨터에 대해 알고싶어서 그러고 잘몰라서 그러는데요.
    구성 관리자는 어떻게 실행 하나요?

    답글삭제
    답글
    1. 위 내용은 Visual Studio에 대한 것입니다, 익명님. ^^

      삭제
    2. 그럼Visual Studio깔아서 실행하면되는건가요? 그리고 몇년도 버전이죠?

      삭제
    3. 네. 최근 버전이면 비슷하게 구성할 수 있을 것입니다.

      삭제

욕설이나 스팸글은 삭제될 수 있습니다. [전파거북이]는 선플운동의 아름다운 인터넷을 지지합니다.