SFML и код :: блоки 0xc00000be

0

Я только начал работать с 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.

  • 0
    Вы можете проверить, открыто ли окно, прежде чем пытаться манипулировать (очищать, рисовать, отображать) окном.
  • 0
    @JoachimPileborg Это на самом деле уже происходит (см. Самый внешний while() ).
Показать ещё 6 комментариев
Теги:
sfml
codeblocks

2 ответа

4

Лучший способ - собрать SFML с помощью CMake.

1

Я не думаю, что причина аварии, но ваш код рисования находится внутри цикла событий, чего не должно быть. У вас будет эта закрывающая скобка (}) до window.clear().

Помимо этого, проблемы, кажется, находятся где-то вне источника, который вы опубликовали.

Редактировать:

Сообщение об ошибке

Точка входа в систему_____xx_personality_v0 не может быть расположена в библиотеке динамических ссылок libstdС++ - 6.dll.

обычно указывает, что исполняемый файл каким-то образом обнаруживает/загружает неправильную версию библиотеки libstdС++ - 6.dll. Причиной этого может быть другая версия в системном каталоге или каталоге приложения.

Чтобы решить эту проблему, вам придется отслеживать загрузку неправильной копии. Вы можете сделать это, например, с помощью Dependency Walker. Просто запустите программу и перетащите ее в нее. Затем он покажет вам проводник, подобный дереву, с конкретными библиотеками, которые он пытался загрузить. Найдите файл библиотеки и убедитесь, что он правильный или нет.

  • 0
    Я даже не заметил этого, спасибо. Тем не менее, он не внес никаких изменений в ошибку.
  • 0
    Обновил мой ответ с чем-то новым, чтобы попробовать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню