본문 바로가기

개발/Client Side

VC6 -> VS 2005 변환 후 wchar_t 문제

VC6로 개발된 프로젝트를 VS 2005로 변환한 후 빌드하면

wchar_t 관련해서 변환할 수 없다는 오류가 쏟아지는 경우가 있다.

이유는 다음과 같다.

VC6에서는 WCHAR 사용시 네이티브 타입이 unsigned short 타입인데 반해,

VS 2005 이상에서는 WCHAR 사용시 네이티브 타입을 wchar_t로 사용한다고 한다.

결국 네이티브 타입이 서로 달라서 문제가 생기는 것이다.

이것을 해결하려면 프로젝트 속성을 변경하면 된다.

프로젝트 속성 화면으로 들어가서

[언어] -> wchar_t을 기본 제공 형식으로 처리 옵션을 "아니오"로 바꾸고 다시 빌드하면 된다.

이 옵션을 아니오로 바꾸면 VS2005에서도 WCHAR를 unsigned short 로 인식하게 되는 것이다.

그렇다면 리눅스에서는??

gcc 기반에서 wchar_t는 int 형으로 정의되어 있다. 

그러므로 윈도우/리눅스 간 통신을 하는 프로그램이라면

데이터형을 맞추기 위해 wchar_t를 새로 정의해서 맞춰서 사용해야 한다.