2016-09-25 2 views
3

전체 오류 출력의 존재는 :Qt는 프로젝트 : "확인되지 않은 외부 기호 wWinMain"

LNK2019 unresolved external symbol wWinMain referenced in function "int __cdecl __scrt_common_main_seh(void)" ([email protected]@YAHXZ) kachna-tracker C:\dev\kachna-tracker\MSVCRT.lib(exe_wwinmain.obj) 

이 Qt는 창조주에서 수입 한 프로젝트이며, 나는 Release를 빌드 할 때이 오류가 발생합니다 버전 Debug 버전이 제대로 실행됩니다. 라이브러리에서 디버그 버전 (예 : qtmain.lib/qtmaind.lib)을 사용하는 것 외에는 DebugRelease 구성 사이에는 링커 구성에 차이가 없습니다.

이 오류는 /SUBSYSTEM:CONSOLE 대신 서브 시스템을 /SUBSYSTEM:WINDOWS으로 설정하여 해결할 수 있습니다.이 문제는 실제로 해결되었지만 GUI 응용 프로그램을 빌드 할 때 영구적으로 열려있는 콘솔 창은보기 흉하고, 원인이 아닌 증상 만 수정했을 수도 있습니다.

이 오류를 해결하는 방법?

+0

비슷한 - http://stackoverflow.com/questions/6626397/error-lnk2019-unresolved-external-symbol-winmain16-referenced-in-function – sashoalm

답변

3

TL; DR

다음 중 하나를

  • 안 유니 코드 릴리스
  • 또는/항목을 추가 출시

qtmain에서 mainCRTStartup 링커 플래그를 라이브러리는 WinMain 함수에 대한 래퍼를 제공합니다. Windows에서 크로스 플랫폼 main() 함수를 정의 할 수 있습니다. 그러나 지금은 qtmain 라이브러리가 wWinMain 함수 (WinMain 엔트리 포인트의 유니 코드 버전)를 지원하지 않습니다.

아마도 디버그와 릴리스 빌드의 차이점은 릴리스가 아닌 디버그에서 유니 코드를 사용하여 컴파일한다는 것입니다.

유니 코드를 사용하여 컴파일하려면 qtmain 라이브러리와 연결해서는 안되며 일반 old 주 대신 wWinMain을 정의해야합니다.

또는/entry : mainCRTStartup 링커 플래그를 추가하여 아름답고 표준적인 기본 기능을 유지할 수 있습니다. 자세한 내용은 this link을, 진입 점에 대한 자세한 내용은 this awesome answer을 참조하십시오.

+0

실제로 "유니 코드"를 사용하여 디버그를 컴파일하지만 항목 포인트 픽스가 작동했으며, 대답을 연결해 주셔서 감사합니다! –

관련 문제