Win32 API 프로그래밍 중 _tmain과 windows.h에 대한 궁금증이 있습니다.
글쓴이: qeeeeep / 작성시간: 화, 2016/01/26 - 1:28오후
안녕하세요 Win32 API를 공부하는 학생입니다.
윈도우즈에서 빈 윈도우 창 하나를 띄워보는 예제를 공부해보는데 처음부터 쉽지가 않네요
windows.h 헤더파일 인클루드에서
Visual Studio 2015 컴파일러가 다음과 같은 에러 두 개를 보여줍니다.
* LNK1120 1개의 확인할 수 없는 외부 참조입니다.
* LNK2019 _WinMain@16 외부 기호(참조 위치: "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수)에서 확인하지 못했습니다.
대략적인 소스는 다음과 같습니다.
#include <windows.h> #include <tchar.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCWSTR lpszClass = _T("First"); int APIENTRY _tmain(HINSTANCE hInstance, HINSTANCE hPrevInstance , LPCWSTR lpszCmdParam, int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst = hInstance; .... return Message.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { ..... }
공부하는 예제소스가 유니코드 기반이 아니라서 그런지 컴파일 에러가 나서
제가 임의로 원래 소스에서 다음과 같이 수정하였는데 그것이 원인인 것 같습니다.
tchar.h 헤더 추가
LPSTR -> LPCWSTR 변경
WinMain -> _tmain 변경
"문자열" -> _T("문자열")
원인이 무엇이고 어떻게 해결할 수 있는지 궁금합니다!
Forums:
_tmain을 변경하세요.
_tmain -> _tWinMain으로 변경하시면 됩니다.
_tmain은 콘솔용입니다.
참고로, Visual Studio를 사용해서 처음 공부하시는거라면 유니코드 기반으로 하시면 오히려 더 복잡하기도 하거니와 흔히 말하는 MS표준을 많이 사용하게 됩니다.
프로젝트 설정에서 문자집합을 설정안함으로 변경하시고..
http://gauryan.blogspot.jp/2013/10/visual-studio.html
sdl체크를 사용안함으로 변경해서 사용하시기 바랍니다.
http://lureout.tistory.com/425
검색해보시면 이런저런 사이트가 많이 나오니 참고하세요.
너무너무 감사합니다!!
친절한 답변 감사합니다!
LPCWSTR도
PWSTR로 바꿔야 되네요!
댓글 달기