我在c ++编译任何简单的OpenGL应用程序时遇到了很多麻烦。我一直在环顾四周,大多数人都看到问题是链接,但我找不到适合我的解决方案。我已经将MinGW添加到Path中,并且还移动了freeglut和glut库和头文件。我使用了一个简单的openGL教程示例,它应该在黑盒子中绘制一条白线。这是我的代码:
#include <gl/freeglut.h>
using namespace std;
void Draw(){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glBegin(GL_LINES);
glVertex3f(.25, .25, 0.0);
glVertex3f(.75, .75, 0.0);
glEnd();
glFlush();
}
void Initialize(){
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
int main(int iArgc, char** cppArgv){
glutInit(&iArgc, cppArgv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250, 250);
glutInitWindowPosition(200, 200);
glutCreateWindow("XoaX.net");
Initialize();
glutDisplayFunc(Draw);
glutMainLoop();
return 0;
}
这是我的构建日志:
-------------- Build: Debug in OpenGL (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -o bin\Debug\OpenGL.exe obj\Debug\main.o
obj\Debug\main.o: In function `glutInit_ATEXIT_HACK':
c:/mingw/include/gl/freeglut_std.h:614: undefined reference to `_imp____glutInitWithExit@12'
obj\Debug\main.o: In function `glutCreateWindow_ATEXIT_HACK':
c:/mingw/include/gl/freeglut_std.h:616: undefined reference to `_imp____glutCreateWindowWithExit@8'
obj\Debug\main.o: In function `glutCreateMenu_ATEXIT_HACK':
c:/mingw/include/gl/freeglut_std.h:618: undefined reference to `_imp____glutCreateMenuWithExit@8'
obj\Debug\main.o: In function `Z4Drawv':
C:/Users/Jack/Programs/OpenGL/main.cpp:8: undefined reference to `glClear@4'
C:/Users/Jack/Programs/OpenGL/main.cpp:9: undefined reference to `glColor3f@12'
C:/Users/Jack/Programs/OpenGL/main.cpp:10: undefined reference to `glBegin@4'
C:/Users/Jack/Programs/OpenGL/main.cpp:11: undefined reference to `glVertex3f@12'
C:/Users/Jack/Programs/OpenGL/main.cpp:12: undefined reference to `glVertex3f@12'
C:/Users/Jack/Programs/OpenGL/main.cpp:13: undefined reference to `glEnd@0'
C:/Users/Jack/Programs/OpenGL/main.cpp:14: undefined reference to `glFlush@0'
obj\Debug\main.o: In function `Z10Initializev':
C:/Users/Jack/Programs/OpenGL/main.cpp:17: undefined reference to `glClearColor@16'
C:/Users/Jack/Programs/OpenGL/main.cpp:18: undefined reference to `glMatrixMode@4'
C:/Users/Jack/Programs/OpenGL/main.cpp:19: undefined reference to `glLoadIdentity@0'
C:/Users/Jack/Programs/OpenGL/main.cpp:20: undefined reference to `glOrtho@48'
obj\Debug\main.o: In function `main':
C:/Users/Jack/Programs/OpenGL/main.cpp:24: undefined reference to `_imp__glutInitDisplayMode@4'
C:/Users/Jack/Programs/OpenGL/main.cpp:25: undefined reference to `_imp__glutInitWindowSize@8'
C:/Users/Jack/Programs/OpenGL/main.cpp:26: undefined reference to `_imp__glutInitWindowPosition@8'
C:/Users/Jack/Programs/OpenGL/main.cpp:29: undefined reference to `_imp__glutDisplayFunc@4'
C:/Users/Jack/Programs/OpenGL/main.cpp:30: undefined reference to `_imp__glutMainLoop@0'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
19 error(s), 0 warning(s) (0 minute(s), 0 second(s))
我在Windows 7系统上使用代码块。
这是我的新错误
Building to ensure sources are up-to-date
Selecting target:
Debug
Adding source dir: C:\Users\Jack\Programs\OpenGL\
Adding source dir: C:\Users\Jack\Programs\OpenGL\
Adding file: C:\Users\Jack\Programs\OpenGL\bin\Debug\OpenGL.exe
Changing directory to: C:/Users/Jack/Programs/OpenGL/.
Set variable: PATH=.;C:\MinGW\bin;C:\MinGW;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;c:\Program Files (x86)\Intel\iCLS Client;c:\Program Files\Intel\iCLS Client;C:\Program Files\Broadcom\Broadcom 802.11 Network Adapter\Driver;\;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\WIDCOMM\Bluetooth Software;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Microsoft SQL Server\110\Tools\Binn;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn;c:\Program Files\Microsoft SQL Server\100\Tools\Binn;c:\Program Files\Microsoft SQL Server\100\DTS\Binn;C:\Program Files (x86)\CMake 2.8\bin
Starting debugger: C:\MinGW\bin\gdb.exe -nx -fullname -quiet -args C:/Users/Jack/Programs/OpenGL/bin/Debug/OpenGL.exe
failed
答案 0 :(得分:2)
标头只是编译器的目录。您还需要将实际库添加到项目构建链接器选项中,以便可以创建工作可执行文件。您需要将-lopengl32 -lglut
添加到编译器选项中。