현제 활용중인 교재 http://www.soen.kr/ 사이트의 api 강좌 순서대로 진행중
visual studio2017 사용중 프로젝트 생성시 설정 windows 응용프로그램 + 빈프로젝트
교재 시작시 기본 winmain 코드에서의 오류화면
첫 번째 오류 "const char *" 형식의 값을 사용하여 "LPSTR" 형식의 엔티티를 초기화할 수 없습니다.
해결하는데 참고한 사이트 주소
https://espada4897.wordpress.com/2014/12/23/lpstr%EA%B3%BC-lpctstr%EC%97%90-%EA%B4%80%ED%95%B4%EC%84%9C/comment-page-1/#comment-33
결론
LP = long pointer = 포인터를 나타낸다
STR = string = 문자형
C =
constant (상수화= 변형되지 않는)
W =
wide char = 유니코드
위 내용을 참고하여 차근차근 보도록 하면
첫 번째 오류 "const char *" 형식의 값을 사용하여 "LPSTR" 형식의 엔티티를 초기화할 수 없습니다
우선 선언시 LPSTR = const형식이 아니므로 해당 내용을 맞춰준다.
LPSTR -> LPCSTR
컴파일시 다음 에러 화면
두 번째 오류
"LPCSTR" 형식의 값을 "LPCWSTR" 형식의 엔터티에 할당할 수 없습니다.
위의 내용을 참고해보면 "LPCWSTR"는 유니코드 형태가 되고 "LPCSTR" 첫 번째 오류에서알 수 있듯이 해당자료형은 const char * 형이다 즉 W가 없음으로 멀티바이트문자(아스키코드) 라는것이다. 즉 " 문자열 "는 멀티바이트 문자형태로 저장된다는것이다.
그리고 두 번째 오류내용에서 또 알수 있는점은 소스에서 "LPCSTR"값을 "LPCWSTR" 형태로 할당하려하는점이다.
그렇다면 왜 오류가 나는것일가 그점은 프로젝트 속성을 들어가보면 알 수 있다.
보면 알겠지만 유니코드 문자를 사용한다고 설정되어 있다 그러나 위 소스에서의 "문자"는 멀티바이트로 사용되야한다. 그러나 유니코드 문자형태로 사용하는 설정때문에 오류가 나게 된것이다. 해당 설정을 멀티바이트 문자 집합을 사용으로 바꿔주면 해결이 가능하다.
컴파일시 다음 에러화면
세 번째 오류
_main 외부 기호(참조 위치: "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수)에서 확인하지 못했습니다.
해당 설정에서 하위 시스템을 콘솔이 아닌
'옛날옛적+맛보기 공부 > c언어' 카테고리의 다른 글
c언어로 구현한 스네이크게임(지렁이 게임) (0) | 2018.12.12 |
---|