Ошибка компоновщика: неразрешенный внешний символ только с wWinMain MSVC 2019 - PullRequest
0 голосов
/ 06 июля 2019

Это единственный код, который у меня есть:

#include <windows.h>

int APIENTRY wWinMain(
    _In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPWSTR pCmdLine,
    _In_ int nCmdShow)
{
    OutputDebugStringA("Hello\n");

    return 0;
}

Функция wWinMain с точно такой же подписью работает в отдельном проекте, который я создал с помощью шаблона «Настольное приложение Windows» (или чего-то еще).

Однако я получаю LNK2019 с сообщением:

unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

от MSVCRTD.lib(exe_main.obj)

Я использую Visual Studio 2019 Community Edition с MSVC 2019 в Windows 10. Я создал «Пустой проект» и у меня есть только файл «main.cpp» в каталоге «Исходные файлы».

Может кто-нибудь помочь мне попытаться диагностировать, что может быть не так? Мне не повезло читать MSDN / искать в Интернете решение, это очень расстраивает, так как я просто пытаюсь оторваться от земли.

Спасибо.

1 Ответ

1 голос
/ 06 июля 2019

Установите для Подсистемы значение Windows в настройках компоновщика (для всех конфигураций и целей).

Subsystem Windows

Visual Studio может компилироваться для различных подсистем Windows , для каждой из которых требуется собственная точка входа в программу.Ошибка «_main not found» предполагает, что ваша подсистема настроена на консоль, поскольку компоновщик ищет функцию main().

Если у вас есть точка входа WinMain() (или wWinMain() для режима Unicode), это означает, что вы нацелены на подсистему Windows.

...