발생 원인


해당 에러는 유니코드와 멀티바이트의 차이로 인해 발생하는 에러이다.

 

먼저 배경을 설명하자면, 대표적인 ASCII 코드의 경우 1Byte의 크기를 차지한다. 하지만 ASCII 코드만으로 다른 문자 체계를 전부 표현할 수 없다는 한계가 있다. 이로 인해 2Byte 문자 집합의 구성이 필요해졌으며 멀티 바이트를 2Byte 문자 집합으로 구성하고 ISO-2200에 멀티바이트로 정의하게 되었다. 

 

멀티바이트는 유니코드와 같이 2Byte 이상의 문자 집합이나, 표준으로서 합의가 이루어지지 않은 윈도우에서 개발된 코드이기 때문에 차이가 있게 된다. 이에 따라 기본적으로 Visual Studio에서 개발 시 유니코드를 사용할 것인지 멀티바이트를 사용할 것인지에 대한 기본 값을 설정한 뒤 개발을 진행해야 한다.

 

유니코드 문자열을 사용하려면 문자열에 L을 붙여 사용하면 된다.

ex) 유니코드    : (L"Hello World")

ex) 멀티바이트 : ("Hello World")  

 

유니코드로 개발된 프로그램을 멀티바이트로 포팅하려면 위와 같은 표현을 모두 수정해주어야 하는 불편함이 따른다. 이를 해결하기 위해 _T 매크로라는 것이 사용되며, 문자열을 따옴표로 감싼 뒤 유니코드에서 사용한 L 대신 _T를 사용하면 매크로가 알아서 개발 환경에 맞게 번형되어 컴파일 될 수 있도록 한다.

 

해결 순서


1. [프로젝트] → [속성]

 

2. [구성 속성] [고급] [문자 집합] [멀티바이트 문자 집합 사용]

 

 

3. 해결

+ Recent posts