Код: Выделить всё
#include
#include
int main() {
sf::RenderWindow window{ {800, 600}, "TGUI window with SFML" };
tgui::GuiSFML gui{ window };
gui.loadWidgetsFromFile("menus/startMenu.txt");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
gui.handleEvent(event);
if (event.type == sf::Event::Closed) {
window.close();
}
}
window.clear();
gui.draw();
window.display();
}
}
Код: Выделить всё
#include
#include
int main() {
sf::RenderWindow window{ {800, 600}, "TGUI window with SFML" };
tgui::GuiSFML gui{ window };
gui.loadWidgetsFromFile("menus/startMenu.txt");
tgui::Button::Ptr aButton = gui.get("a"); // right here
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
gui.handleEvent(event);
if (event.type == sf::Event::Closed) {
window.close();
}
}
window.clear();
gui.draw();
window.display();
}
}
Исключение, созданное по адресу 0x7956271B (tgui.dll) в maze 2.exe: 0xC0000005: местоположение чтения нарушения прав доступа 0x000003E4
В настоящее время я динамически связываю tgui и sfml, используя TGUI-0.9 и SFML-2.5.1 с отладкой x86 в Visual Studio c++.
Ошибка также говорит мне, что она исходит от
Код: Выделить всё
template
typename T::Ptr get(const String& widgetName) const
{
return std::dynamic_pointer_cast(get(widgetName));
}
Я думаю, что проблема в том, что Dynamic_pointer_cast выдает ошибку, но я не знаю, как ее исправить. Я также не понимаю, почему все остальное работает, кроме функции gui.get("sometext");. Любая помощь?
Изменить 1: я протестировал gui.get(), который работает отлично. Это означает, что проблема определенно в динамическом_pointer_cast, поскольку gui.get() просто вызывает gui.get() и запускает для него динамический_pointer_cast.
Подробнее здесь: https://stackoverflow.com/questions/696 ... kend-in-tg
Мобильная версия