Je fais des expériences avec opengl in c pour linux. J'ai la fonction suivante qui dessinerait un cercle donné ces paramètres. J'ai inclusPourquoi cette petite fonction (dessiner un cercle en opengl) ne va-t-elle pas se compiler en c?
#include <stdlib.h>
#include <math.h>
#include <GL/gl.h>
#include <GL/glut.h>
Cependant, lorsque je compile:
gcc fiver.c -o fiver -lglut
je reçois:
/usr/bin/ld: /tmp/ccGdx4hW.o: undefined reference to symbol '[email protected]@GLIBC_2.2.5'
/usr/bin/ld: note: '[email protected]@GLIBC_2.2.5' is defined in DSO /lib64/libm.so.6 so try
adding it to the linker command line
/lib64/libm.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
La fonction est la suivante:
void drawCircle (int xc, int yc, int rad) {
//
// draw a circle centered at (xc,yc) with radius rad
//
glBegin(GL_LINE_LOOP);
//
int angle;
for(angle = 0; angle < 365; angle = angle+5) {
double angle_radians = angle * (float)3.14159/(float)180;
float x = xc + rad * (float)cos(angle_radians);
float y = yc + rad * (float)sin(angle_radians);
glVertex3f(x,0,y);
}
glEnd();
}
Est-ce que quelqu'un sait ce qui est faux?
Il ne manque pas de compiler; il ne parvient pas à lier. –
Hmm, avec le recul, cela semble être le vrai problème: '/lib64/libm.so.6: ne pouvait pas lire les symboles: Opération invalide' - mais je n'ai aucune idée de ce que le problème pourrait être là ... peut-être mésapparié 64/32 bibliothèques? – cdhowie
Vous pouvez également regarder dans les astuces que vous pouvez utiliser lorsque vous dessinez un cercle. Les cercles ont beaucoup de symétrie, et vous pouvez l'utiliser pour réduire le nombre de fois que vous devez appeler les fonctions trigonométriques par un facteur de 3 pour les cercles orientés autour de (0,0) – nategoose