Cannot convert from 'const char *' to 'LPCTSTR'

이 오류는 CFile에서 Open 함수를 사용할 때 첫번째 매개변수에 char*을 넣어서 발생했다.
그 외 다른 MFC 함수에서도, char*를 넣게 되면 종종 발생하는 오류다.
이유는 CFile::Open 등의 함수에서 매개변수로 Unicode 문자열(wchar_t)을 받을 것이라고 기대하지만 사용자가 멀티바이트 문자열( char *)을 넣었기 때문이다.
그렇다면 멀티바이트를 넣을 것이라고 예상하게 만들기 위해선..
1. 비주얼 스튜디오에서 Alt+F7을 눌러 속성에서 Use Multi-Byte Character set으로 바꾼다. 2. string 구문, 예를 들어 "Hello World"일 경우엔 다음과 같은 매크로를 쓴다. L"Hello World" 혹은 _T("Hello World")
3. 다음과 같이 CString 타입 생성자에 char* 을 매개변수로 넣는다.


char* FileName = new char[10];
CFile targetFile;
CFileException ex;

std::string s = std::to_string(i+1);
strcpy_s(FileName, 10, s.c_str());
strcat_s(FileName, 10,  ".jpg");
CString FileNameStr(FileName);
여러모로 귀찮다.
참고 : https://social.msdn.microsoft.com/Forums/vstudio/en-US/c1b08c0a-a803-41c3-ac8c-84eba3be1ddb/faq-cannot-convert-from-const-char-to-lpctstr?forum=vclanguagel

댓글