LNK2019: неразрешенный внешний символ _main, на который ссылается функция ___tmainCRTStartup, ошибка при использовании WinMain

Я следовал этому руководству, чтобы научиться программированию DirectX: http://www.rastertek.com/dx11tut02.html

Я дошел до конца, попытался собрать, и он сгенерировал эту ошибку при компиляции:

MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

Итак, я много гуглил, чтобы попытаться найти решение, среди которых я пробовал:

-Установка точек входа как WinMainCRTStartup, wWinMainCRTStartup а также mainCRTStartup (возможно, другие тоже)

-Убедившись, что подсистема настроена на Windows, а не на консоль, даже попытался установить ее как «console» и как «not set» на всякий случай.

-Добавьте существующий элемент для файла, содержащего основной метод.

-Скачал предоставленный код в учебнике, чтобы убедиться, что это не было ошибкой кодирования с моей стороны, все равно не сработало.

Теперь интересное:

Я попытался загрузить учебный код на свой рабочий стол (к которому я обычно не имею доступа, находясь в отъезде), на котором установлена ​​копия Visual C ++ Express 2010 (на моем ноутбуке установлена ​​Visual Studio 2010 Professional). На рабочем столе он работал абсолютно нормально, в первый раз не нужно было менять ни одной настройки.

Таким образом, проблема должна быть связана с установкой VS на моем ноутбуке, или что-то еще, что связано с моим ноутбуком.

Я попытался сбросить все настройки VS до значений по умолчанию, удалить VS, выполнить ремонтную установку, установить Visual C ++ Express, установить Windows SDK v7.1, все, что я мог придумать, и это все еще не работает.

Просто чтобы прояснить, код, который я использую для основного:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pScmdline, int iCmdshow)

Пожалуйста, помогите, я потратил 2 дня бездельничая с этим и нигде не получил, я на грани попытки переустановить Windows полностью.

2

Решение

Я столкнулся с подобной проблемой сегодня.

мой main.cpp не был включен в сборку правильно.

Перейдите в обозреватель решений, щелкните правой кнопкой мыши файл и выберите «Свойства».

Удостоверься что

  1. файл включен в сборку и
  2. Инструмент установлен на C / C ++ инструмент компилятора.
2

Другие решения

Выбор проекта в качестве консоли Win32, а не окна Win32, и поэтому компоновщик не смог распознать мой winmain в качестве основной программы.

1

Если вы используете SDL (библиотека Simple DirectMedia Layer), вам необходимо также ссылаться на SDL2main.lib, а не только на SDL2.lib, потому что SDL переопределяет функцию main который, кстати, должен быть прописан в полном объеме, как в int main(int argc, char* args[]),

0
По вопросам рекламы [email protected]