Я изучаю библиотеку SFML, и я выбрал код из учебника. он открывает окно, и я должен снова его закрыть, но когда я закрываю его, он говорит
Debug Error!
Run-Time Check Failure #2 - stack around variable 'App' was corrupted.
and then the console stops working.
this is my code:
int main()
{
// Create the main window
sf::Window App(sf::VideoMode(800, 600, 32), "SFML Events");
while (App.IsOpened())
{
// Process events
sf::Event Event;
while (App.GetEvent(Event))
{
// Close window : exit
if (Event.Type == sf::Event::Closed)
App.Close();
// Escape key : exit
if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
App.Close();
}
// Display window on screen
App.Display();
}
return EXIT_SUCCESS;// = return 0
}
ссылки на библиотеки отладки
sfml-system.lib
sfml-window.lib
sfml-system-d.lib//these are debug files
sfml-window-d.lib
если я удаляю первые 2 и собираю свою программу, она не выдает ошибок, но когда я ее открываю, она говорит:
приложение не удалось запустить правильно (0xc0150002). нажмите кнопку ОК, чтобы закрыть приложение
У меня есть 64-битный компьютер. и в Microsoft vc ++ 2010 я могу сделать решение для сборки или отладки, и я всегда делаю решение для сборки.
и я строю в режиме релиза, но я также попробовал оба, и они оба не работали
Может кто-нибудь, пожалуйста, скажите мне, что я мог сделать, чтобы предотвратить это или как это происходит.
Для этих проблем запуска приложения, это всегда хорошая идея, чтобы проверить, все ли dll в закрытии зависимости доступны — то есть они все в поисковой переменной PATH? Мы обычно используем ходок зависимости чтобы проверить, какие библиотеки отсутствуют, или используйте GFLAGS для диагностики во время выполнения
Хотя размещение ваших dll с вашим exe-файлом в одной и той же папке работает, оно плохо масштабируется, но обычно я делаю путь к пути библиотеки в переменной окружения PATH.
И одна вещь, на которую следует обратить внимание, sfml поставляется с предварительно собранной библиотекой для vs2005 и vs2008, так как вы используете vs2010, базовая библиотека времени выполнения c (msvcrt) отличается, могут возникнуть потенциальные проблемы — вам лучше собрать sfml из исходного кода самостоятельно, используя vs2010 или используйте vs2005 / vs2008, просто чтобы быть последовательным
Если вы не хотите использовать DLL и хотите скомпилировать SFML в exe, вот учебник:
2,0 http://www.sfml-dev.org/tutorials/2.0/start-vc.php
вам нужно добавить директиву препроцессора SFML_STATIC и включить в компоновщик дополнительные библиотеки, которые вы используете в своей программе -> input
У меня также были некоторые связанные проблемы, когда я впервые использовал это (и эквивалентные библиотеки). Вот несколько моментов, которые стоит учесть: