2012-09-01 5 views
0

Вот программа, которую я пытаюсь запуститьОшибка компиляции с OpenGL

////////////////////////////////////////////////////   
// square.cpp 
// 
// Stripped down OpenGL program that draws a square. 
// 
// Sumanta Guha. 
//////////////////////////////////////////////////// 

#include <iostream> 

#ifdef __APPLE__ 
# include <GLUT/glut.h> 
#else 
# include <GL/glut.h> 
#endif 

using namespace std; 

// Drawing (display) routine. 
void drawScene(void) 
{ 
    // Clear screen to background color. 
    glClear(GL_COLOR_BUFFER_BIT); 

    // Set foreground (or drawing) color. 
    glColor3f(0.0, 0.0, 0.0); 

    // Draw a polygon with specified vertices. 
    glBegin(GL_POLYGON); 
     glVertex3f(20.0, 20.0, 0.0); 
     glVertex3f(80.0, 20.0, 0.0); 
     glVertex3f(80.0, 80.0, 0.0); 
     glVertex3f(20.0, 80.0, 0.0); 
    glEnd(); 

    // Flush created objects to the screen, i.e., force rendering. 
    glFlush(); 
} 

// Initialization routine. 
void setup(void) 
{ 
    // Set background (or clearing) color. 
    glClearColor(1.0, 1.0, 1.0, 0.0); 
} 

// OpenGL window reshape routine. 
void resize(int w, int h) 
{ 
    // Set viewport size to be entire OpenGL window. 
    glViewport(0, 0, (GLsizei)w, (GLsizei)h); 

    // Set matrix mode to projection. 
    glMatrixMode(GL_PROJECTION); 

    // Clear current projection matrix to identity. 
    glLoadIdentity(); 

    // Specify the orthographic (or perpendicular) projection, 
    // i.e., define the viewing box. 
    glOrtho(0.0, 100.0, 0.0, 100.0, -1.0, 1.0); 

    // Set matrix mode to modelview. 
    glMatrixMode(GL_MODELVIEW); 

    // Clear current modelview matrix to identity. 
    glLoadIdentity(); 
} 

// Keyboard input processing routine. 
void keyInput(unsigned char key, int x, int y) 
{ 
    switch(key) 
    { 
     // Press escape to exit. 
     case 27: 
     exit(0); 
     break; 
     default: 
     break; 
    } 
} 

// Main routine: defines window properties, creates window, 
// registers callback routines and begins processing. 
int main(int argc, char **argv) 
{ 
    // Initialize GLUT. 
    glutInit(&argc, argv); 

    // Set display mode as single-buffered and RGB color. 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 

    // Set OpenGL window size. 
    glutInitWindowSize(500, 500); 

    // Set position of OpenGL window upper-left corner. 
    glutInitWindowPosition(100, 100); 

    // Create OpenGL window with title. 
    glutCreateWindow("square.cpp"); 

    // Initialize. 
    setup(); 

    // Register display routine. 
    glutDisplayFunc(drawScene); 

    // Register reshape routine. 
    glutReshapeFunc(resize); 

    // Register keyboard routine. 
    glutKeyboardFunc(keyInput); 

    // Begin processing. 
    glutMainLoop(); 

    return 0; 
} 

Я уверен, что я установил перенасыщение и OpenGL, и до настоящего времени, и это ошибка, что я получаю (я компиляции кода, как она выкладывается в книге, которая с 2011 года):

ubuntu:~/Downloads/Code$ gcc square.cpp -o square -I /usr/include/ -L /usr/lib -lglut -lGL -lGLU -lX11 /tmp/ccAq6h4h.o:square.cpp:function __static_initialization_and_destruction_0(int, int): error: undefined reference to 'std::ios_base::Init::Init()' /tmp/ccAq6h4h.o:square.cpp:function __static_initialization_and_destruction_0(int, int): error: undefined reference to 'std::ios_base::Init::~Init()' collect2: ld returned 1 exit status

я написал свой собственный код и оставил его в качестве переменного файла и составлен

+0

Хорошо, код работал, когда я скомпилировал с g ++ вместо gcc, есть ли причина, по которой автор скажет компиляцию с использованием gcc вместо g ++? Я очень новичок в этом, и я понимаю, что gcc компилируется как c-программа, но с g ++ она компилируется и правильно связывается? –

+1

Если авторы сказали вам использовать gcc, они дебилы. C++ ** не является ** C, и это даже не его надмножество. Если ваш код C++, вам нужен компилятор C++. Что такое g ++. – datenwolf

+1

Вы знаете, что используете устаревший OpenGL, не так ли? Вероятно, вы нашли устаревший учебник. См. Http://www.opengl.org/wiki/Legacy_OpenGL для получения дополнительной информации. –

ответ

0

была простая ошибка неправильных файлов составляется.

Смежные вопросы