0

i am using CodeBlock on Windows, i have 3 file :

bmp.h

#include <GL/glaux.h>
AUX_RGBImageRec *LoadBMP(char *Filename);

bmp.cpp

#include <windows.h>
#include <stdio.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glaux.h>
#include "bmp.h"

AUX_RGBImageRec *LoadBMP(char *Filename)
{
     FILE *File=NULL;
     if(!Filename)
     {
          return NULL;
     }

   File = fopen(Filename, "r");

   if(File)
   {
        fclose(File);

        return auxDIBImageLoad(Filename);
   }

   return NULL;
 }

program.cpp

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <GL/glut.h>

#include "bmp.h"

float z_post = -5.0f;
float rot = 0.0f;

GLfloat LightAmbient[]=     {0.5f, 0.5f, 0.5f, 1.0f};
GLfloat LightDiffuse[]=     {1.0f, 1.0f, 1.0f, 1.0f};
GLfloat LightPosition[]=    {0.0f, 0.0f, 2.0f,1.0f};

GLuint filter;
GLuint texture[3];

int LoadGLTextures()
//Load Bitmaps And Convert To Textures
{
    int Status = FALSE;
    AUX_RGBImageRec *TextureImage[1];
    memset(TextureImage, 0, sizeof(void *)*1);
    if (TextureImage[0]=LoadBMP("Glass.bmp"))
    {
        Status = TRUE;
        glGenTextures(3, &texture[0]);
        glBindTexture(GL_TEXTURE_2D, texture[0]);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX,
                      TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

        glBindTexture(GL_TEXTURE_2D, texture[1]);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX,
              TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

        glBindTexture(GL_TEXTURE_2D, texture[2]);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
        gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
    }
    if (TextureImage[0])
    {
        if (TextureImage[0]->data)
        {
            free(TextureImage[0]->data);
        }
        free(TextureImage[0]);
    }
    return Status;
}

void resize(int width, int height)
{
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0, (float)width/(float)height, 1.0, 300.0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

void myTimeOut(int id)
{
    rot += 10;
    glutPostRedisplay();
    glutTimerFunc(100, myTimeOut, 0);
}

void myKeyboard(unsigned char key, int x, int y)
{
    if((key == '<') || (key == ',')) z_post-=0.1f;
    else if ((key=='>') || (key=='.')) z_post += 0.1f;
    else if ((key=='F') || (key=='f'))
    {
        filter += 1;
        if (filter > 2)
        {
            filter =0;
        }
        printf("filter: %i", filter);
    }
}

void mydisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

        glLoadIdentity();
        glTranslatef(0.0, 0.0f, z_post);
        glRotatef(rot, 0, 1, 0);

        glBindTexture(GL_TEXTURE_2D, texture[filter]);

        glBegin(GL_QUADS);
            //front face
            glColor3f(1.0, 0.0, 0.0);
            glNormal3f(0.0f, 0.0f, 1.0f);
            glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
            glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 1.0f);
            glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f);
            glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
            //back face
            glNormal3f(0.0f, 0.0f, -1.0f);
            glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
            glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
            glTexCoord2f(0.0f, 1.0f); glVertex3f(1.0f, 1.0f, -1.0f);
            glTexCoord2f(0.0f, 0.0f); glVertex3f(1.0f, -1.0f, -1.0f);
            //top face
            glNormal3f(0.0f, 1.0f, 0.0f);
            glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,1.0f, -1.0f);
            glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
            glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, 1.0f, 1.0f);
            glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, -1.0f);
            //bottom face
            glNormal3f(0.0f, -1.0f, 0.0f);
            glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
            glTexCoord2f(0.0f, 1.0f); glVertex3f(1.0f, -1.0f, -1.0f);
            glTexCoord2f(0.0f, 0.0f); glVertex3f(1.0f, -1.0f, 1.0f);
            glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
            //right face
            glNormal3f(1.0f, 0.0f, 0.0f);
            glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
            glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, -1.0f);
            glTexCoord2f(0.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f);
            glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
            //left face
            glNormal3f(-1.0f, 0.0f, 1.0f);
            glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
            glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
            glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
            glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
       glEnd();
       glFlush();
       glutSwapBuffers();
}

void init()
{
    if(!LoadGLTextures())
    {
        return;
    }

    glEnable(GL_TEXTURE_2D);
    glShadeModel(GL_SMOOTH);
    glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
    glClearDepth(1.0f);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LEQUAL);
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);
    glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
    glLightfv(GL_LIGHT1, GL_POSITION, LightPosition);
    glEnable(GL_LIGHT1);

    return;
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(0,0);
    glutCreateWindow("simple");

    glutDisplayFunc(mydisplay);
    glutKeyboardFunc(myKeyboard);
    glutTimerFunc(100, myTimeOut, 0);
    glutReshapeFunc(resize);

    init();
        glutMainLoop();
        return 0;
}

but i got this error when i run it

Build Message

Build Log

i am tryng to find solution about -lglu / ld.exe then i cant find anything.

Glass.bmp already on folder, then i try download and copy glaux.dll to MinGW/bin and in my project build linker : opengl32, glu, glut32

πάντα ῥεῖ
  • 1
  • 13
  • 116
  • 190
  • 1
    Possible duplicate of [How do I link to a library with Code::Blocks?](https://stackoverflow.com/questions/5862757/how-do-i-link-to-a-library-with-codeblocks) – Mikhail May 30 '17 at 22:49
  • what lib for -lglu ? –  May 30 '17 at 22:52

1 Answers1

0

Your linker does not know where to find the library you are referencing.

You will have to tell it where to find it. The easiest solution would likely be to add the and the libs directories of the libraries you are referencing to your linker's search directories. Make sure the linker's directories correspond with the build target (in other words don't link x86 and compile to ARM).