2016-09-25 5 views
3

Весь вывод ошибок являются:Qt проект в Visual Studio 2015: «неразрешенный внешний символ 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 Creator, и эта ошибка возникает только тогда, когда я пытаюсь построить Release версия, Debug версия работает только хорошо. Насколько я могу судить, помимо использования отладочных версий библиотек (например, qtmain.lib/qtmaind.lib), нет никакой разницы в компоновке компоновщика между конфигурациями и Release.

Я обнаружил, что эта ошибка может быть исправлена ​​путем установки Subsystem к /SUBSYSTEM:CONSOLE вместо /SUBSYSTEM:WINDOWS, и это действительно делает исправить эту проблему, но, как я строй приложения с графическим интерфейсом, перманентно открытым окно консоли довольно неприглядное, а также, вероятно, только фиксирует симптом, а не причину.

Как исправить эту ошибку?

+0

похоже - http://stackoverflow.com/questions/6626397/error-lnk2019-unresolved-external-symbol-winmain16-referenced-in-function – sashoalm

ответ

3

TL; DR

Либо:

  • Отключить Unicode в версии
  • Или добавить/запись: флаг компоновщика mainCRTStartup в Выпуске

qtmain библиотека предоставляет оболочку вокруг функции WinMain в Windows, чтобы вы могли определить кросс-платформенную функцию main(). Но теперь функция wWinMain (версия юникода точки входа WinMain) не поддерживается библиотекой qtmain.

Возможно, разница между сборками Debug и Release заключается в том, что вы скомпилируете Unicode в Release, а не в Debug.

Если вы хотите скомпилировать с включенным Unicode, вам не следует ссылаться на библиотеку qtmain, и вы должны определить wWinMain вместо простого старого основного.

В качестве альтернативы вы можете добавить/link: флаг mainCRTStartup, чтобы сохранить свою красивую и стандартную основную функцию. См. this link для получения дополнительной информации и this awesome answer для получения подробной информации о точках входа.

+0

Я на самом деле собираю Debug с включенным «Unicode», но запись исправлено точечное исправление, и спасибо за ссылку на ответ! –

Смежные вопросы