見たことのないエラー
gccを使い、ブロック崩しのプログラムを作っています。
Linuxの環境だと、コンパイルもうまくいくのですが、
cygwinでコンパイルしようとするとundefined reference toというエラーがたくさん出てきます。
助けてください。
ソースは以下の通りです。
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
double xx;
double ballx,bally;
int xv,yv;
double bwidth, bheight;
double bposx, bposy;
double pposx, pposy;
double pwidth,pheight;
double by,bx;
int i,j;
int delblock[5][9]=
{{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}};
void timer(int value) {
ballx=ballx+xv;// X方向
if((ballx>100)||(ballx<-100)) xv*=-1;//反転、枠にぶつかった時 xv = xv * (-1)
bally=bally+yv;// Y方向
if(bally>100) yv*=-1;// 反転、枠にぶつかった時
if(bally<-130) yv*=-1;//exit(0);
if((xx<ballx) && ((xx+pwidth)>ballx) && (bally>pposy) && (bally<(pposy+pheight))){
yv*=-1;//反転、打ち返した時
}
for(j=0; j<5; j++){
for(i=0; i<9; i++){
if(delblock[j][i]==0){
if((ballx>=bposx+bx) && (ballx<=bposx+bwidth+bx) && (bally>=bposy+bheight+by)){
if(bally<=bposy+bheight+by){yv*=-1;delblock[j][i]=1;}
}
else if((ballx>=bposx+bx) && (ballx<=bposx+bwidth+bx) && (bally<=bposy+by)){
if(bally>=bposy+by){yv*=-1;delblock[j][i]=1;}
}
else if((bally>=bposy+by) && (bally<=bposy+bheight+by) && (ballx<=bposx+bx)){
if(ballx>=bposx+bx){xv*=-1;delblock[j][i]=1;}
}
else if((bally>=bposy+by) && (bally<=bposy+bheight+by) && (ballx>=bposx+bwidth+bx)){
if(ballx<=bposx+bwidth+bx){xv*=-1;delblock[j][i]=1;}
}
}
bx=bx+21;
}
bx=0;
by=by+11;
}
by=0;
glutPostRedisplay();
glutTimerFunc(10 , timer , 0);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
////ボール////
glColor3d(1.0, 1.0, 1.0);
glPointSize(10);
glBegin(GL_POINTS);
glVertex2f(ballx/100.0 , bally/100.0);
glEnd();
////打ち返す台////
glColor3d(0.2, 0.2, 0.8);
glBegin(GL_POLYGON);
glVertex2d((pposx+xx)/100, pposy/100);
glVertex2d((pposx+xx)/100, (pposy+pheight)/100);
glVertex2d((pposx+pwidth+xx)/100, (pposy+pheight)/100);
glVertex2d((pposx+pwidth+xx)/100, pposy/100);
glEnd();
////ブロックを増やす////
/*for(i=0; i<9; i++){
glBegin(GL_POLYGON);
glVertex2d((bposx+tx)/100, bposy/100);
glVertex2d((bposx+tx)/100, (bposy+bheight)/100);
glVertex2d((bposx+bwidth+tx)/100, (bposy+bheight)/100);
glVertex2d((bposx+bwidth+tx)/100, bposy/100);
glEnd();
tx=tx+21.0;
}*/
////////////////////////
////ブロックを増やす2////
for(j=0; j<5; j++){
for(i=0; i<9; i++){
if(delblock[j][i]==0){
glBegin(GL_POLYGON);
glVertex2d((bposx+bx)/100, (bposy+by)/100);
glVertex2d((bposx+bx)/100, (bposy+bheight+by)/100);
glVertex2d((bposx+bwidth+bx)/100, (bposy+bheight+by)/100);
glVertex2d((bposx+bwidth+bx)/100, (bposy+by)/100);
glEnd();
}
bx=bx+21;
}
bx=0;
by=by+11;
}
by=0;
////////////////////////
glutSwapBuffers();
glFlush();
}
void key(unsigned char key , int x , int y) {
if((key=='z')&&(xx>=-98)){
xx=xx-4;
}
if((key=='x')&&(xx<=78)){
xx=xx+4;
}
}
int main(int argc, char *argv[])
{
xx=0.0;
ballx=30.0;
bally=-50.0;
xv=1;
yv=1;
bwidth=20.0;
bheight=10.0;
bposx=-95.0;
bposy=-0.0;
pwidth=20;
pheight=5;
pposx=0;
pposy=-95;
bx=0;
by=0;
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutKeyboardFunc(key);
glutTimerFunc(10 , timer , 0);
glutMainLoop();
return 0;
}