Точка входа Qt5 программы и компилятор Visual Studio 2012+

Многие сталкивались с тем что при компиляции студией Qt-проектов (и не только) Windows не хочет использовать стандартную функцию main(), а требует свои

WinMain

для GUI приложений и при использовании UNICODE, выдавая ошибки линковки вроде этих:

LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup

или

error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

На более старых версиях проблему можно было отчасти решить, задав точку входа принудительно через

/ENTRY:main

или

#pragma comment( linker, "/entry:main" )

Но сейчас такой способ больше не работает, программа будет падать при старте. Если вам не нужна поддержка WCHAR в параметрах argv, то проще всего слинковать со специальной служебной либой Qt5 для линковки с main(). Библиотека называется Qt5::WinMain:

IF (BUILD_WIN32)
TARGET_LINK_LIBRARIES(${PROJECT} Qt5::WinMain) # Correct entry point
ENDIF()

Leave a Reply

Your email address will not be published. Required fields are marked *