Я только начал работать с SFML 2.1 в Windows 7, используя Code :: Blocks в качестве моей IDE. Я использую библиотеки, скомпилированные для MinGW. Я выполнил руководство по настройке SFML в Code :: Blocks, но я столкнулся с ошибкой, которую я никогда не видел раньше, когда запускаю программу:
The application was unable to start correctly (0xc00000be). Click OK to close the application.
До сих пор я пробовал статически и динамически связывать SFML безрезультатно. Я пробовал работать как режим отладки, так и режим выпуска, который также вызывал ту же ошибку каждый раз. Ошибка возникает каждый раз, когда я запускаю программу, но при компиляции ошибок нет.
Да, у меня есть библиотеки, связанные в правильном порядке, и да, я использую xxxx-s
когда я связываю библиотеки статически и xxxx-d
для отладки, а также xxxx-sd
для статически связанной отладки. На момент публикации я только что получил последний SFML 2.1 примерно 10 часов назад, поэтому, если SFML не обновляется с тех пор, я использую последнюю сборку. Я также попытался перестроить проект, который также не исправить.
Тем не менее, я попытался переустановить библиотеки в другом порядке (sfml-system
, затем sfml-window
, а затем sfml-graphics
, да, я знаю, что это в обратном порядке, но это было просто испытание), и он все еще произвели ту же ошибку.
Исходный код:
#include <SFML/Graphics.hpp>
int main() {
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Works!");
sf::CircleShape circle(50.f);
circle.setFillColor(sf::Color::Red);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(circle);
window.display();
}
return 0;
}
Редактировать:
Полуфиксировать: если я использую SFML, скомпилированный для TDM, программа запускается без ошибок. Однако, если я использую библиотеки MinGW, я получаю сообщение об ошибке: The procedure entry point__gxx_personality_v0 could not be located in the dynamic link library libstdc++-6.dll
.
Лучший способ - собрать SFML с помощью CMake.
Я не думаю, что причина аварии, но ваш код рисования находится внутри цикла событий, чего не должно быть. У вас будет эта закрывающая скобка (}
) до window.clear()
.
Помимо этого, проблемы, кажется, находятся где-то вне источника, который вы опубликовали.
Редактировать:
Сообщение об ошибке
Точка входа в систему_____xx_personality_v0 не может быть расположена в библиотеке динамических ссылок libstdС++ - 6.dll.
обычно указывает, что исполняемый файл каким-то образом обнаруживает/загружает неправильную версию библиотеки libstdС++ - 6.dll. Причиной этого может быть другая версия в системном каталоге или каталоге приложения.
Чтобы решить эту проблему, вам придется отслеживать загрузку неправильной копии. Вы можете сделать это, например, с помощью Dependency Walker. Просто запустите программу и перетащите ее в нее. Затем он покажет вам проводник, подобный дереву, с конкретными библиотеками, которые он пытался загрузить. Найдите файл библиотеки и убедитесь, что он правильный или нет.
while()
).