Чтение нарушения прав доступа при запуске gui.get("") с серверной частью sfml в TGUIC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Чтение нарушения прав доступа при запуске gui.get("") с серверной частью sfml в TGUI

Сообщение Anonymous »

Сейчас я пытаюсь использовать TGUI с SFML в качестве бэкэнда, когда у меня был этот код, все работало нормально

Код: Выделить всё

#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();
}
}
Однако затем я попытался добавить строку для ссылки на кнопку, загруженную из tgui::Button::Ptr aButton = gui.get("a");.

Код: Выделить всё

#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));
}
в Container.hpp в TGUI.
Я думаю, что проблема в том, что 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»