错误找不到-lglu

Error cannot find -lglu

本文关键字:-lglu 找不到 错误      更新时间:2023-10-16

我在Windows上使用CodeBlock,我有3个文件:

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;
}

但是我在运行时遇到了这个错误

构建消息

构建日志

我正在尝试找到有关-lglu/ld.exe的解决方案,然后我找不到任何东西。

glass.bmp已经在文件夹上了,然后我尝试下载并复制glaux.dll到mingw/bin在我的项目构建链接器中:OpenGL32,Glu,Glut32

您的链接器不知道在哪里找到您的引用库。

您将必须告诉它在哪里可以找到它。最简单的解决方案可能是将您引用的库的库的库目录和LIBS目录添加到链接器的搜索目录。确保链接器的目录与构建目标相对应(换句话说,请勿链接x86并编译到ARM(。