Это потрясает мое понимание компьютеров и операционных систем на уровне, который делает меня очень неловким. Я только что потратил около часа, вводя различные итерации команд компиляции в g++
, и в своем раздражении я переименовал исполняемый файл, который имел задержку от game.exe
до gameg.exe
, и внезапно проблема исчезла.
Вот еще немного предыстории: я недавно заметил, что когда я запускал сборку модульного теста Eclipse, когда я начинал с теста с поддержкой SDL, он открывал окно SDL и зависал примерно на 20 секунд, прежде чем можно было начать тест. , В последующих тестах (которые вызывают SDL_Quit()
и повторно инициализируют SDL как часть процесса тестирования) эта задержка отсутствует. Теперь я убедился, что ТОЛЬКО когда исполняемый файл называется точно "game.exe", это происходит! Я переименую его в любое другое имя файла, и он успешно запускает тесты, инициализируя систему SDL за секунду, как обычно. Ранее я предполагал, что должна быть какая-то ошибка, из-за которой моя сборка Eclipse имела такое поведение, которого не было в сборке makefile, но оказывается, что я беру сборку eclipse и переименовываю ее исполняемый файл (папка проекта он называется game
, следовательно game.exe
), он не демонстрирует поведение.
Аналогично, я беру свою сборку make-файла (имя которой entropy_unittest_disp.exe
fyi) и переименовываю ее в game.exe
, и она начинает это делать. Я переименовываю его в game
, и он тоже делает это (я запускаю из bash mingw .. когда нет расширения .exe
, проводник не знает, что это исполняемый файл). Однако я изменил его на game.exx
, и он работал нормально.
ЧТО ЭТО ЧЕРНАЯ МАГИЯ? Почему программа должна работать по-разному в зависимости от имени файла ??? Я делаю запрос argv [0] и фактически делаю это, чтобы вывести на консоль его значение (для целей отладки), но неудивительно, что он просто печатает программу и ее путь. Никакая логика никогда не выполняется в моей программе.
Я пытался запустить GDB, чтобы выяснить, где он зависает, но как только я нажимаю Ctrl + C, GDB просто завершается.
Кто-нибудь знает, чем это может быть вызвано? Вирус?
редактировать: я скачал эту демонстрацию с этого сайта: http://www.sdltutorials.com/sdl-opengl-tutorial-basics/
извлек его, переименовал файл в game.exe, и да, происходит то же самое. ЧТО ЭТО? Я собираюсь попробовать запустить обходчик зависимостей, чтобы посмотреть, не пытается ли что-то зацепиться за него.