使用 GLUT 程序编译时出错
Errors when compiling with GLUT program
不可能
编译错误。请帮忙,谁遇到了类似的问题?操作系统: 乌班图IDE: 克里昂
CMakeFiles/a4_waves_OpenGL.dir/main.cpp.o: In function 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:错误:ld 返回 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;
}
未定义的引用意味着链接器找不到一个或多个函数定义(详细信息在此处)。
在您的情况下,您很可能没有再次链接 opengl32 ( -lGL
)。如果您还没有这样做,您还需要再次链接 glut ( -lglut
)。看看这个答案,看看必须如何做到这一点。
相关文章:
- 在Linux for Windows上编译C++代码时出错
- 为x86而非x64编译时出错
- 当我尝试通过 mingw 使用 CMake 和 SFML 库编译项目时出错
- 尝试在Windows上执行C++时出错(通过MinGW编译)
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- constexpr 使用 clang 编译 TensorFlow 时出错
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 编译包含指向模板函数的指针的初始值设定项列表时,gcc 出错,但 clang 不出错
- 编译时出错 - 从 DWORD 到 LPCVOID 的转换
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- 编译时出错 - 链接.cpp和头文件
- <limits> 使用 VSC2019 编译旧代码时出错
- 在 ubuntu 焦点上编译虚幻引擎 4.25 时出错
- 编译包含LLVM API标头的C++文件时出错
- 编译以下代码时出错
- 使用交叉工具ng编译gcc时出错
- 在 dll 中为 qLibrary 编译 qobject 时出错
- 使用 cmake 在窗口上编译 c++ 数据库时出错
- 使用 TDM GCC 5.1.0 编译 PDCurses36 时出错
- Lua :在原生lua中编译,但在使用LuaJIT和sol2时C++出错