Erreur de lieur: référence indéfinie au symbole 'glOrtho'
J'ai installé OpenGL paquets de Ubuntu 13.04 ( *mesa-common-dev freeglut3-dev*
) et a essayé de courir un exemple de programme.
#include "GL/freeglut.h"
#include "GL/gl.h"
/* display function - code from:
http://fly.cc.fer.hr/~unreal/theredbook/chapter01.html
This is the actual usage of the OpenGL library.
The following code is the same for any platform */
void renderFunction()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
glFlush();
}
/* Main method - main entry point of application
the freeglut library does the window creation work for us,
regardless of the platform. */
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow("OpenGL - First window demo");
glutDisplayFunc(renderFunction);
glutMainLoop();
return 0;
}
Cependant, j'ai rencontré cette erreur et ne savent pas quoi faire de lui.
ved@vedvals:~/Desktop/p1$ g++ p1.cpp -lglut
/usr/bin/ld: /tmp/ccgGdeR2.o: undefined reference to symbol 'glOrtho'
/usr/bin/ld: note: 'glOrtho' is defined in DSO /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 so try adding it to the linker command line
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
J'ai eu un coup d'oeil à
OpenGL bonjour.c ne parvient pas à construire en utilisant CMake
comme l'erreur est similaire, mais je ne suis pas en utilisant CMake
EST mon code erroné ou dois-je inclure/modifier/ajuster certains paramètres?
J'ai appelé ce site pour l'installation et le code :
La configuration d'un OpenGL environnement de développement sous Ubuntu Linux
source d'informationauteur VedVals
Vous devez vous connecter pour publier un commentaire.
Vous devez lier la librairie OpenGL:
Vous n'avez pas lié à la lib OpenGL, où
glOrtho()
est défini. Pour le faire fonctionner, compilation/lien avecg++ p1.cpp -lglut -lGL
. L'esprit de l'ordre de la liaison libs, car il est important dansld
(éditeur de liens utilisés par g++). La bibliothèque GLUT dépend de l'OpenGL, et ainsi de-lGL
A aller après-glut
. C'est parce queld
seulement fait un cycle à travers les bibliothèques, et donc si vous avez lié-lGL -lglut
les références de lglut à lGL ne sera pas défini, donc de faire une erreur de couplage. Désolé pour cette longue réponse, mais j'espère que vous allez apprendre quelque chose.