Headers are just tables of contents for the compiler. You also need to add the actual libraries to the project build linker options, so that a working executable can be created. You need to add -lopengl32 -lglut
to the compiler options.
I cannot compile an OpenGL application due to library issues
-
07-07-2023 - |
Question
I am having alot of trouble compiling any simple OpenGL application in c++. I have been looking around and have mostly seen that the problem is linking, but i haven't been able to find a solution that works for me. I have added MinGW to the Path and also moved the freeglut and glut libraries and headers over. I have used a simple openGL tutorial example and its supposed to draw a white line in a black box. Here is my code:
#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;
}
Here is my build log:
-------------- 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))
I am using code blocks on a windows 7 system.
This is my new error
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
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow