我目前正在尝试从类Render中的文件中加载纹理,并出现此错误。
在引发'__gnu_cxx :: __ concurrence_lock_error'实例后调用终止
what():__gnu_cxx :: __ concurrence_lock_error
此应用程序已请求运行时以异常方式终止它。请联系应用程序的支持团队以获取更多信息。
我在SFML中使用Code :: Blocks,并确保我的项目文件夹不是只读的
main.cpp
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <vector>
#include <time.h>
#include <fstream>
#include <math.h>
#include <windows.h>
#include "dim.h"
#include "render.h"
using namespace std;
sf::RenderWindow window;
int main()
{
cout << "main" << endl;
srand(time(NULL));
Dim world1(64, 64);
for(int y = world1.y - 1 ; y > 0; y = y - 1)
{
for(int x = 0; x < world1.x; x++)
{
cout << world1.grid.at(y).at(x);
}
cout << "\n";
}
cout << "done"<< endl;
Render render;
render.loadTextures();
for(int i = 0; i < render.fileList.size(); i++)
{
cout << render.fileList[i] << ", ";
}
return 0;
}
render.h
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <vector>
#include <time.h>
#include <fstream>
#include <math.h>
#include <windows.h>
using namespace std;
#ifndef RENDER_H_INCLUDED
#define RENDER_H_INCLUDED
class Render
{
public:
vector<string> fileList; //List of file names
vector<sf::Texture> textures; //List of textures
void loadTextures(); //Function to load file names from .txt
void createWindow(int, int, sf::RenderWindow); //Function to create window
void setWorld(); //Function to assign sprites' initial positions and textures
};
#endif // RENDER_H_INCLUDED
render.cpp
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <vector>
#include <time.h>
#include <fstream>
#include <math.h>
#include <windows.h>
#include "render.h"
using namespace std;
void Render::loadTextures()
{
cout << "loading textures" << endl;
string line;
ifstream myfile ("texturelist.txt");
if (myfile.is_open())
{
cout << "texture list file opened" << endl;
while ( getline (myfile,line) )
{
cout << "reading line" << endl;
Render::fileList.push_back(line);
cout << "saved line" << endl;
}
}
myfile.close();
cout << "texture names loaded." << endl;
Render::textures.resize(Render::fileList.size());
for(int i = 0; i < Render::fileList.size(); i++)
{
if(!Render::textures[i].loadFromFile(Render::fileList[i]))
{
cout << "error" << endl;
}
}
cout << "textures created" << endl;
}
void createWindow(int width, int height, sf::RenderWindow window)
{
window.create(sf::VideoMode(width, height), "Game");
cout << "Window created" << endl;
}
完整输出:
主要 创造世界
生成层
拆分:16
生成
生成层
拆分:16
生成
生成层
拆分:8
生成
创造的世界
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000010010000000000000000000010001000000000000000
10000000000000000000111111111000000000000000000011111110000000000000
1111100000000000111111111111110000000000111111111111110000000000
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
2111111111111111111111112111111111111111111111111111111111111112
2211111111111111111122222211111111111111111111112111111111111122
2221111111112111111122222221111121111111111122222222211111111222
2222111111122211111222222222222221111111111222222222222111111112222
2222211111222221112222222222222222111111112222222222222222222222
2222222112222222122222222222222222111111222222222222222222222222
2222222222222222222222222222222221122222222222222222222222222222
2222222222222222222222222222222222222222222222222222222222222
2222222222222222222222222222222222222222222222222222222222222
2222222222222222222222222222222222222222222222222222222222222
2222222222222222222222222222222222222222222222222222222222222
2222222222222222222222222222222222222222222222222222222222222
2222222222222222222222222222222222222222222222222222222222222
2222222222222222222222222222222222222222222222222222222222222
2222222222222222222222222222222222222222222222222222222222222
2222222232222222222222222222222222222222222222222322222222222
2222222233222222322222222222222222222222222222222222333222223333
2222222333322233332222222222222222222222222222223223333333333333
2222222333333333333222222222222222222222232222223223333333333333
2222223333333333333322223333332222222222222232222233333333333333
22222233333333333333333333333332222222222222333222233333333333333
3222233333333333333333333333333333333222223333322333333333333333
333333333333333333333333333333333333333222233333332333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
完成
加载纹理
纹理列表文件已打开
阅读线
保存的行
阅读线
保存的行
阅读线
保存的行
已加载纹理名称。
抛出实例后调用terminate
'__ gnu_cxx :: __ concurrence_lock_error'
what():__gnu_cxx :: __ concurrence_lock_error
此应用程序已请求运行时以一种异常方式终止它。
请与应用程序的支持团队联系以获取更多信息。
进程返回3(0x3)执行时间:3.276 s
按任意键继续。