SFML 程序出现线程错误
SFML program having thread errors
我最近开始使用带有Visual studios 2012 c ++的Library SFML。
一切都很好,直到我开始使用自定义字体,然后弹出这些消息,没有任何效果:
'Graphics test.exe' (Win32): Loaded 'C:UsersOliver BoltDocumentsVisual Studio 2012ProjectsGraphics testDebugGraphics test.exe'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64ntdll.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:Program FilesAVAST SoftwareAvastsnxhk.dll'. Cannot find or open the PDB file.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64kernel32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64KernelBase.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64opengl32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64msvcrt.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64advapi32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64sechost.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64rpcrt4.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64sspicli.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64cryptbase.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64gdi32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64user32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64lpk.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64usp10.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64glu32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64ddraw.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64dciman32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64setupapi.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64cfgmgr32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64oleaut32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64ole32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64devobj.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64dwmapi.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64winmm.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64msvcp110d.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64msvcr110d.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64imm32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64msctf.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64nvinit.dll'. Cannot find or open the PDB file.
'Graphics test.exe' (Win32): Loaded 'C:Program Files (x86)NVIDIA Corporationcoprocmanager_etoured.dll'. Cannot find or open the PDB file.
'Graphics test.exe' (Win32): Loaded 'C:Program Files (x86)NVIDIA CorporationcoprocmanagerNvd3d9wrap.dll'. Cannot find or open the PDB file.
'Graphics test.exe' (Win32): Loaded 'C:Program Files (x86)NVIDIA Corporationcoprocmanagernvdxgiwrap.dll'. Cannot find or open the PDB file.
'Graphics test.exe' (Win32): Loaded 'C:PROGRA~2OPTIMI~1OPTPRO~1.DLL'. Module was built without symbols.
'Graphics test.exe' (Win32): Unloaded 'C:PROGRA~2OPTIMI~1OPTPRO~1.DLL'
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64uxtheme.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64ig7icd32.dll'. Cannot find or open the PDB file.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64igdusc32.dll'. Cannot find or open the PDB file.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64version.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Unloaded 'C:WindowsSysWOW64version.dll'
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64dinput.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64hid.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64wintrust.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64crypt32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64msasn1.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Loaded 'C:WindowsSysWOW64ole32.dll'. Symbols loaded.
'Graphics test.exe' (Win32): Unloaded 'C:WindowsSysWOW64ole32.dll'
The thread 0xed8 has exited with code 0 (0x0).
The thread 0x131c has exited with code 0 (0x0).
The thread 0x105c has exited with code 0 (0x0).
The thread 0x19e8 has exited with code 0 (0x0).
The thread 0xeb4 has exited with code 0 (0x0).
The thread 0x187c has exited with code 0 (0x0).
The thread 0x1c78 has exited with code 0 (0x0).
The thread 0x480 has exited with code 0 (0x0).
The thread 0x1244 has exited with code 0 (0x0).
The program '[4124] Graphics test.exe' has exited with code 0 (0x0).
导致这些错误的程序:
#include <SFMLSystem.hpp>
#include <SFMLGraphics.hpp>
#include <ctime>
#include <sstream>
using namespace sf;
using namespace std;
int main()
{
VideoMode videoMode(320, 240);
RenderWindow window(videoMode, "Plus or minus");
Font font;
if (!font.loadFromFile("TOMB.TTF"))
{
return EXIT_FAILURE;
}
Text title("Plus Or Minus", font, 20);
title.setPosition(10, 10);
title.setColor(Color::White);
Text question("What is your guess ?",font,20);
question.setPosition(5,30);
question.setColor(Color::White);
Text enter("", font, 20);
enter.setPosition(5, 50);
enter.setColor(Color::Green);
String textEntered;
int numEntered = 0;
Text status("", font, 16);
status.setPosition(100, 50);
status.setColor(Color::Yellow);
stringstream out("");
Text won("You have discoveredn the secret numbern in less than 10 tries,n well played !", font, 20);
won.setPosition(5, 70);
won.setColor(Color::Green);
Text lost("You have failed ton discover the secretn number in less thann 10 tries, better nluck next time!", font, 20);
lost.setPosition(5, 70);
lost.setColor(Color::Red);
srand(static_cast<unsigned int> (time(NULL)));
int secretNumber = rand() % 100;
bool isGameOn = true;
bool playerWon = false;
int tryNumber = 0;
while (window.isOpen())
{
window.clear();
window.draw(title);
if (isGameOn)
{
window.draw(question);
window.draw(enter);
window.draw(status);
}
else
{
if (playerWon)
{
window.draw(won);
}
else
{
window.draw(lost);
}
}
window.display();
Event event;
while (window.pollEvent(event))
{
if ((event.type == Event::Closed) || ((event.type == Event::KeyPressed) && (event.key.code == Keyboard::Escape)))
{
window.close();
}
if (event.type == Event::TextEntered)
{
char c = static_cast<char> (event.text.unicode);
if (c >= '0' && c <= '9')
{
textEntered += event.text.unicode;
enter.setString(textEntered);
}
else if (c == 'r')
{
tryNumber++;
stringstream in(enter.getString());
in >> numEntered;
if (numEntered > secretNumber)
{
out << tryNumber;
out << ". ";
out << numEntered;
out << ": Minus" << endl;
status.setString(out.str());
}
if (numEntered < secretNumber)
{
out << tryNumber;
out << ". ";
out << numEntered;
out << ": Plus" << endl;
status.setString(out.str());
}
if (numEntered == secretNumber)
{
playerWon = true;
status.setString("");
isGameOn = false;
}
if (tryNumber > 10)
{
playerWon = false;
status.setString("");
isGameOn = false;
}
textEntered = "";
}
}
}
return EXIT_SUCCESS;
}
}
我已经四处搜索,但我并没有真正找到这个问题的答案,如果有人能帮我解决这个问题,将不胜感激! :)
此致敬意
自由的Sirenety
在
while (window.isOpen()) { ... }
循环的末尾有一个return
语句。因此,循环仅运行一次。