【发布时间】:2019-03-03 14:55:00
【问题描述】:
同时使用 Steamworks 和 SFML 时程序退出时抛出异常:
Exception thrown at 0x00007FFA919D024E (ntdll.dll) in Project1.exe: 0xC0000005: Access violation reading location 0x0000000000000010.
我已将程序缩减为最基本的程序,但仍然遇到问题:
#include <SFML/Graphics.hpp>
#include <steam/steam_api.h>
int main()
{
SteamAPI_Init();
sf::RenderWindow window(sf::VideoMode::getDesktopMode(), "Title", sf::Style::Close);
while (window.isOpen())
{
sf::Event e;
while (window.pollEvent(e))
{
switch (e.type)
{
case sf::Event::Closed:
{
window.close();
break;
}
}
}
}
SteamAPI_Shutdown();
return 0;
}
【问题讨论】:
-
看起来像一个空指针取消引用。不知道为什么。
-
我看到当您调用 SteamAPI_Shutdown() 时,sf::RenderWindow 对象变量“window”仍在范围内。换句话说,您已经交错初始化/取消初始化:1. 初始化蒸汽,2. 初始化窗口,3. 关闭蒸汽,4. 关闭窗口。我认为应该交换 3&4。只是一个疯狂的猜测,但是您是否尝试通过在窗口变量和 while 循环周围放置花括号来将其置于不同的范围内,以将蒸汽(反)初始化保持在外部?
-
感谢您的建议,但很遗憾这不起作用。
标签: c++ sfml steamworks-api