SFML и C++ Уроки \ Разработка игр › Форумы › SFML Начало работы (подключение и настройка) › SFML + QT Creator "Программа неожиданно завершилась"
В этой теме 14 ответов, 3 участника, последнее обновление sandreev86 7 года/лет, 7 мес. назад.
-
АвторСообщения
-
Не могу запустить пример 22ого урока, компилируется нормально, но при попытке запуска сразу крашится с ошибкой “программа неожиданно завершилась” при попытке запуска отладчика вылетает ошибка “during startup program exited with code 0xc0000135″ библиотеки подключил правильно, подскажите пожалуйста в чем дело если есть догадки
Скинь код и проектный файл, экстрасенсорная тех. поддержка это не самая легкая задача.
блин, так и знал что сразу надо было скинуть) компилятор MinGW 32bit
Вложения:
You must be logged in to view attached files.Ну у меня программа падает вот в этом месте:
C++1234567Object Level::GetObject(std::string name){// только первый объект с заданным именемfor (int i = 0; i < objects.size(); i++)if (objects[i].name == name)return objects[i];}Причина в том, что из данного метода ничего не возвышается, если объект с таким именем не был найден. Что еще раз доказывает, что факапу быть, если игнорировать предупреждения(warning) компилятора. Я вижу два решение данной проблемы:
- Возвращать в конце данного метода объект с вызовом конструктора по умолчанию и затем проверять результат на не равенство объекта созданного с конструктором по умолчанию. (Не рекомендую)
- Создать класс исключения “объект не найден” и бросать его в конце данного метода.
Если смотреть в глубь проблемы, то данного объекта нет из-за того что уровень (класс Level) не был загружен по причине отсутствия тайлсета.
C++12345if (!img.loadFromFile(imagepath)){std::cout << "Failed to load tile sheet." << std::endl;//если не удалось загрузить тайлсет-выводим ошибку в консольreturn false;}Отсюда можно сделать следующие выводы:
- либо вы не приложили папку изображений в архив и у вас совершенно другая причина не работоспособности;
- либо вам следует проверять результат вызова метода Level::LoadFromFile и завершать работу программы с ошибкой, если уровень не был загружен.
C++1234if(!lvl.LoadFromFile("map.tmx")) { //загрузили в него карту, внутри класса с помощью методов он ее обработает.std::cerr << "Level was not load" << std::endl;return 2;}P.S.: настоятельно рекомендую всем исправлять warning’и, которые возникают при компиляции.
Действительно причина другая, при проверке загрузки карты все то же самое, перезалил архив с изображениями
Вложения:
You must be logged in to view attached files.sandreev86, у меня для вас две новости, по традиции плохая и хорошая =)
Начнем с хорошей: ваша программа нормально собирается и работает у меня. Отсюда же следует и плохая: это ни на сколько не решает вашу проблему.
Однако у меня еще есть пара идей:
- попробуйте собрать и запустить приложение в режиме релиза,
- покажите переменную среды path в среде окружения запуска проекта. Для этого перейдите во вкладку “Проекты” в левом меню, в открывшемся окне выберите вкладку “Запуск” и раскройте область “Среда выполнения” там вы найдете переменные среды.
в режиме релиза так же падает.
А может ли влиять на это то что система 64 битная, а среда и компилятор 32?
Вложения:
You must be logged in to view attached files.Нет это не должно влиять. А проекты без SFML нормально работают?
Да, нормально.
А у тебя компилятор какой?
clang 3.5. А какую версию ты скачал SFML? Случайно не 64-битную?
нет, 32
Не знаю что я сделал, заработало) но все равно спасибо вам большое)
Подожди, опиши все действия, которые ты вообще совершал. Попробуем установить проблему, чтобы люди столкнувшиеся с подобной проблемой меньше мучилась.
RazorNd , спасибо! очень круто отвечаешь
Перекачал sfml, забыл что тот я скачивал для другого компилятора
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.