«__gnu_cxx::recursive_init_error» с opengl и

#c

Вопрос:

Я использовал iostream для чтения bmp-файла. Однако при запуске общей библиотеки возникает «__gnu_cxx::recursive_init_error», но не последовательно. Комментирование glClear действительно устраняет проблему (или комментирование #include lt;iostreamgt; или всех других команд рисования opengl), но я предпочел бы сохранить это. Я несколько сократил свой код, чтобы воспроизвести проблему так же, как это было обычно. Я думаю, что это может быть 2 потока, борющихся за один и тот же регистр, но я не слишком уверен, и, вероятно, в любом случае это проще.

 #include lt;cmathgt; #include "GL/freeglut.h" #include "GL/glut.h" #include lt;iostreamgt; void displayCallback(); void initBegin() {  glClearColor(0.0,0.0,0.0,1.0);  glColor3f(1.0, 1.0, 1.0);  glEnable(GL_CULL_FACE);  glCullFace(GL_BACK);  glMatrixMode(GL_PROJECTION);  glLoadIdentity();  glFrustum(-0.1, 0.1, -0.1, 0.1, 0.1, 100);  glMatrixMode(GL_MODELVIEW);  glLoadIdentity();  glTranslatef(0, 0, -3); } int pos[3] = {0000,0000,-3000};//thousandths int rot[2] = {0,0};//attitude,asmith int rotcapattitude = 90; int wasd[2] = {0,0};// fb,lr int width, height, nrChannels; float borderColor[] = { 1.0f, 1.0f, 0.0f, 1.0f }; bool mousecapture = false; int main(int argc,char **argv) {  glutInit(amp;argc,argv);  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);  glutInitWindowSize(500,500);  glutCreateWindow("templete");  glutDisplayFunc(displayCallback);  glutIgnoreKeyRepeat(1);  initBegin();  glutMainLoop();  return 0; } void displayCallback() {  glClear(GL_COLOR_BUFFER_BIT);  glLoadIdentity();  glRotatef(rot[0],1,0,0);  glRotatef(rot[1],0,1,0);  glTranslatef(static_castlt;floatgt;(pos[0])/1000,static_castlt;floatgt;(pos[1])/1000,static_castlt;floatgt;(pos[2])/1000);  glutSwapBuffers(); }