Неразрешенная ошибка внешнего символа в ОЧЕНЬ простом приложении - PullRequest
2 голосов
/ 29 марта 2011

Сбой простого кода:

#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    MessageBox(NULL, L"Hello World!", L"Just another Hello World program!", MB_ICONEXCLAMATION | MB_OK);

    return 0;
}

Ошибка:

Ошибка 1 ошибка LNK2019: неразрешенный внешний символ главная ссылка в функции _ _tmainCRTStartup ... Projects \ DX11_3 \ DX11_3 \ MSVCRTD.lib (crtexe.obj) DX11_3

Ошибка 2, ошибка LNK1120: 1 неразрешенный внешний интерфейс ... Проекты \ DX11_3 \ Debug \ DX11_3.exe 1 1 DX11_3

Что может быть не так? Я скачал и установил Windows SDK, добавил в проект папку det include.

Ответы [ 3 ]

2 голосов
/ 29 марта 2011

Точка входа в программу - то место, с которого начинается выполнение.Для консольного приложения это значение по умолчанию main.Для приложения Windows без консоли это по умолчанию WinMain.

Компоновщик ищет main, скорее всего, потому что вы создали консольное приложение.Зайдите в настройки вашего проекта и измените подсистему на Windows.Вы можете найти эту опцию в Настройки конфигурации -> Компоновщик -> Система

1 голос
/ 29 марта 2011

вы компилируете свое приложение как «консольное приложение», поэтому Visual Studio пытается найти точку входа с именем main(). но ваш код определяет «приложение GUI» с точкой входа с именем WinMain().

Вы должны отредактировать настройки своего проекта и установить тип приложения «Консольное приложение» в настройках компоновщика.

1 голос
/ 29 марта 2011

Строго и формально говоря, ваша программа не содержит функции с именем main, поэтому она недопустима в C ++.

Чтобы включить нестандартные расширения, такие как WinMain, вам необходимо убедиться, что вы создаете проект Windows или что параметры компилятора настроены для компиляции программы Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...