에러 설명에 앞서 Visual Studio의 경우 문자 처리는 멀티바이트와 유니코드이다.
멀티바이트란 (MBCS: Multi Byte Character Set)
유니코드가 생기기 이전에 다국어를 표현하기 위해 사용했던 방식으로
영어는 1바이트, 그 외 문자는 2바이트로 처리한다.
유니코드란 (WBCS: Wide Byte Character Set)
기존 멀티바이트의 가변적인 특성을 없앤 방식으로
모든 문자를 2바이트로 처리한다. (GCC는 4바이트)
결론적으로 위 같은 에러가 발생하는 이유는
MFC의 경우 유니코드를 default로 사용하기 때문에 유니코드 형식으로 적어줘야 인식한다.
아래 사진과 같이 텍스트 앞에 'L'을 추가해주면된다.
ex) AfxMessageBox(L" AfxSocketInit 호출 실패 ");
MFC를 처음 사용하면 한번은 겪는 에러인 거 같다 (error C2665 에러로도 뜬다)
+)
문자를 처리할 때,
멀티바이트는 기본적으로 char를 사용하고, 유니코드는 wchar_t를 사용한다
이때 프로젝트 설정을 바꾸면 모든 변수를 변경해야 하는 문제가 발생한다
이런 문제를 해결하기 위해 나온 개념이 T 매크로로 자동으로 변환되어 컴파일 해준다
사용 방법은 '_T(" ") ' 괄호 안에 문자열을 작성해주면 된다.
ex) AfxMessageBox(_T(" AfxSocketInit 호출 실패 "));
참고로 멀티바이트 형식은 우리가 가장 흔하게 쓰는 " "이다.
'오류' 카테고리의 다른 글
EOleSysError [Error] (0) | 2024.08.23 |
---|---|
자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다. 오류 (C#) (0) | 2024.04.12 |
COM 구성 요소 호출에서 HRESULT E_FAIL 오류가 반환되었습니다. 오류 (0) | 2024.03.05 |
Couldn’t upload file 오류 (Postman) (0) | 2023.04.13 |
TypeError: this.client.send is not a function 오류 (AWS-S3) (0) | 2023.04.13 |