2016-03-13 3 views
-1

Невозможно скомпилировать ошибку. Помогите, кто столкнулся с подобной проблемой? ОС: Ubuntu IDE: ClionОшибки при компиляции программой GLUT

CMakeFiles/a4_waves_OpenGL.dir/main.cpp.o: В функции display()': /home/alex/ClionProjects/test/a4-waves_OpenGL/main.cpp:7: undefined reference to glClear»

................. .............

/home/alex/ClionProjects/test/a4-waves_OpenGL/main.cpp:9: неопределенная ссылка на glColor3f' /home/alex/ClionProjects/test/a4-waves_OpenGL/main.cpp:42: undefined reference to glutMainLoop» collect2: ошибка: л.д. 1 возвращается статус выхода сделать [3]: *** [a4_waves_OpenGL] Ошибка 1

код

#include <iostream> 
#include <math.h> 
#include <GL/freeglut.h> 
using namespace std; 

void display() { 
    glClear(GL_COLOR_BUFFER_BIT); ///очистим буфер 

    glColor3f(0.0,1.0,0.0); ///зададим цвет которым будем "рисовать". Я выбрал зелёный. 
    glBegin(GL_LINES); ///начнём рисовать первую координатную ось - OX. Будем это делать при помощи линий 
    glVertex2f(-550,0); ///первая точка оси 
    glVertex2f(550,0); ///вторая точка оси 
    glEnd(); 

    glBegin(GL_LINES); ////теперь проделаем тоже для оси OY 
    glVertex2f(0,150); 
    glVertex2f(0,-150); 
    glEnd(); 

    glBegin(GL_LINE_STRIP); ///начнём рисовать синусоиду при помощи ломаной линии 
    glColor3f(1.0,0.0,0.0); ///выберем для неё красный цвет 

    for (int i = -500; i <= 500; i++) { 
     float y = 100 * sin(i*M_PI/180); ///вычислим текущую координату Y. Функция Sin() принимает значение в радианах, поэтому i следует умножить на число Пи и разделить на 180. Весь результат умножим на 100, указав тем самым максимальную высоту нашей синусоиды. 
     glVertex2d(i,y); 
    } 
    glEnd(); 
    glFlush(); 
} 

int main(int argc, char **argv) { 
    glutInit(&argc,argv); ///инициализируем glut 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); ///использовать 1 буфер, и цвет типа RGB (3 составляющие) 
    glutInitWindowSize(240,240); ///зададим размер окна 240x240 
    glutInitWindowPosition(0,0); ///позиция открытия окна 
    glutCreateWindow("Sin"); ///создать окно с именем "Sin" 
    glClearColor(1.0 , 1.0 , 1.0 , 1.0); ///цвет фона окна 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(-600.0,600.0,-200.0,200.0,-1.0,1.0); ///зададим размеры координатной сетки 
    glutDisplayFunc(display); ///зададим функцию отображающую необходимые объекты 
    glutMainLoop(); ///передает управление в glut 
    return 0; 
} 
+0

g ++ main.cpp -lGL -lglut –

ответ

0

Неопределенная ссылка означает, что компоновщик не может найти одно или несколько определений функций (подробности here).

В вашем случае вы, скорее всего, не свяжетесь снова opengl32 (-lGL). Если вы еще этого не сделали, вам также потребуется связать лишний перегиб (-lglut). Посмотрите, как это должно быть сделано. at this answer.

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