F.R.I.D.A.Y.

VS ERROR LNK2019 : _main 외부 기호(참조 위치: "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수)에서 확인하지 못했습니다. 본문

DEV/Tip

VS ERROR LNK2019 : _main 외부 기호(참조 위치: "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수)에서 확인하지 못했습니다.

F.R.I.D.A.Y. 2019. 2. 28. 16:41
반응형

 프로그램을 잘 작성하다보면, 위와 같은 문제가 발생합니다.

 위 오류의 경우, 프로그램의 진입점(일반적으로 main 함수)을 링커가 찾지 못했기 때문입니다. 자세한 내용은 [코드] 부분의 LNK2019 를 눌러보면 MS docs로 이동합니다.

기계 번역이기 때문에 정확한 번역은 아니지만, 보면 LNK1120 오류는 LNK2019와 함게 나온다고 합니다.

 

 일반적인 경우에는 프로그램 진입점인 int main() 함수의 이름을 제대로 작성했는지를 확인하고 제대로 작성되지 않았다면 다시 제대로 작성하면 대부분 문제가 해결됩니다.

 

 그런데 아래와 같은 경우에도 문제가 일어나는 경우가 있습니다.

 

 

 즉, Windows Desktop(구 Windows32) 프로그래밍을 하려고하면 코드를 제대로 작성했음에도 불구하고 위와 같은 오류가 나는 경우가 있습니다.

 이 경우, Visual Studio의 설정을 변경한 경우 나올 수 있습니다. 제가 경험한 바로는 아직까지는 설정 변경입니다.

 콘솔 창 안닫히게 하는 방법 << 링크한 포스트에서 VS의 설정을 변경해 해결하는 설명이 있습니다. 하위 시스템을 콘솔로 고정토록 하는것인데, 콘솔의 진입점은 main함수입니다. 그러나 Windows Desktop 프로그래밍의 경우 진입점이 WinMain이기 때문에 위와 같은 오류가 날 수 있는 것이지요.

 

 Windows 프로그래밍을 하고 계신다면 어느정도 VS 사용에 익숙해지셨으리라 생각하고 프로젝트 설정창 진입은 설명하지 않겠습니다.

 설정창의 좌측 메뉴에서 [구성 속성] - [링커] - [시스템] 으로 진입합니다. 앞서 링크한 포스트대로 설정을 진행하셨다면, 하위 시스템은 콘솔로 잡혀있습니다. 이 부분을 지워서 공백으로 만들어버리시거나, 콘솔 아래의 [창] 옵션을 선택해주시면 문제가 해결됩니다.

 

 

728x90
반응형
Comments