Я следовал этому руководству, чтобы научиться программированию 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 полностью.
Я столкнулся с подобной проблемой сегодня.
мой main.cpp
не был включен в сборку правильно.
Перейдите в обозреватель решений, щелкните правой кнопкой мыши файл и выберите «Свойства».
Удостоверься что
Выбор проекта в качестве консоли Win32, а не окна Win32, и поэтому компоновщик не смог распознать мой winmain в качестве основной программы.
Если вы используете SDL (библиотека Simple DirectMedia Layer), вам необходимо также ссылаться на SDL2main.lib, а не только на SDL2.lib, потому что SDL переопределяет функцию main
который, кстати, должен быть прописан в полном объеме, как в int main(int argc, char* args[])
,