Opengl32.lib hiba VC++-ban
2006-10-01T09:08:10+02:00
2006-10-21T15:50:14+02:00
2022-07-19T21:26:22+02:00
cszolle
Sziasztok!

Egy openGL-es programot szeretnék lefordítani VC++ 2005 Express Edition-ban. A glutos fájlokat a helyére tettem, linkeltem. Az opengl32.lib-el van valami baja.
A hibaüzenet:
C:\Program Files\Microsoft Visual Studio 8\VC\lib\opengl32.lib : fatal error LNK1136: invalid or corrupt file

Segítsetek légyszi nagyon fontos!
Mutasd a teljes hozzászólást!

  • Lehet, hogy rossz verziot vagy csak eppen rosszul huztad le a OGL-t. Probald meg ujra lehuzni, de most jobban nezd meg mit huzol le!
    Mutasd a teljes hozzászólást!
  • Csak egy helyet tudok ahonnan letudom tölteni az opengl32.lib fájlt. Erről: http://www.inf.u-szeged.hu/~cslaszlo/Computer%20Graphics%2006-07%20f..
    Ezzel nem jó.
    Ha tudsz más helyet légyszi írd meg.
    Mutasd a teljes hozzászólást!
  • Úgy néz ki sikerült a libeket meg .h-kat elrendezni. Most viszont ilyet ír ki: racsok.obj : error LNK2019: unresolved external symbol __imp____glutCreateWindowWithExit@8 referenced in function _glutCreateWindow_ATEXIT_HACK@4
    C:\Documents and Settings\Csíkos Zoltán\Dokumentumok\Visual Studio 2005\Projects\na\Debug\na.exe : fatal error LNK1120: 1 unresolved externals
    Mutasd a teljes hozzászólást!
  • hali!

    konzol alkalmazast hozol letre? probald ugy.
    Mutasd a teljes hozzászólást!
  • Igen konzolost hozok létre.
    Próbálkoztam, most ez a hiba:
    fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory

    Most akkor lekell tölteni ezt az stdafx-et és a helyére kell rakni vagy mi?
    Mutasd a teljes hozzászólást!
  • Én azért megpróbálnám fölrakni a teljes OpenGL SDK-t.
    pl innen (ha windowst használsz):
    http://berkelium.com/OpenGL/sgi-download.html
    Mutasd a teljes hozzászólást!
  • Ezeket biztosan kell linkelni:
    -lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32
    Mutasd a teljes hozzászólást!
  • #define GLUT_DISABLE_ATEXIT_HACK
    kell a forras elejere, hogy mukodjon.
    Mutasd a teljes hozzászólást!
  • Ezek szerint pl az stdafx.h tuti hogy kell, nézd meg fönn van-e a gépen. Ha igen, mégsem találja, akkor az include fileok eléréséhez is föl kell venni az elérési útvonalát. De mondom, szerintem legtisztább, ha fölrakod az opengl SDK-t.
    Mutasd a teljes hozzászólást!
  • az stdafx.h a project beallitasaiban is szerepel, ezert hianyolja, vagy hagyd uresen a projectedben, vagy gyomlald meg a beallitasokat.
    Mutasd a teljes hozzászólást!
  • amikor letrehozod a konzol alkalmazast, akkor alapbol nem egy ures, file nelkuli projektet hoz letre, hanem olyat, ami mar "el van kezdve". ezert letrehozaskor allitsd be, hogy ures projektet hozzon letre. ekkor nem ad hozza egy fajlt se. ezutan neked kell hozzaadni az uj/letezo fajlt a projektedhez.
    Mutasd a teljes hozzászólást!
  • Linkeltem mindent, igazából stdafx nem is kell. Most kettő hiba van:
    error LNK2019: unresolved external symbol __imp____glutCreateWindowWithExit@8 referenced in function _glutCreateWindow_ATEXIT_HACK@4

    másik: fatal error LNK1120: 1 unresolved externals

    Kipróbáltam a define... nélkül meg vele is, de ugyanaz a hiba.

    Az SDK-t is fölraktam.
    Mutasd a teljes hozzászólást!
  • Kipróbáltad már, hogy egy minimális GLUT-os OpenGL alkalmazás működik-e? Szerintem próbáljuk ki, idekopizok egy üres minimálprogramot, másold be. Működik (fehér négyzet egy ablakban)?

    link opciók:
    lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32

    a minimálprogram:

    #include <GL/glut.h> void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glBegin(GL_POLYGON); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); glFlush (); } void init (void) { glClearColor (0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); init (); glutDisplayFunc(display); glutMainLoop(); return 0; }
    Mutasd a teljes hozzászólást!
  • LNK2019: unresolved external symbol __imp____glutInitWithExit@12 referenced in function _glutInit_ATEXIT_HACK@8

    LNK2019: unresolved external symbol __imp____glutCreateWindowWithExit@8 referenced in function _glutCreateWindow_ATEXIT_HACK@4

    Ezt a két hibát adta.
    Mutasd a teljes hozzászólást!
  • #include <gl/glut.h>

    #pragma comment(lib,"gl/glut32.lib")

    (...)
    Mutasd a teljes hozzászólást!
  • Hi!

    // Kipróbáltad már, hogy egy minimális GLUT-os OpenGL alkalmazás működik-e?
    // Szerintem próbáljuk ki, idekopizok egy üres minimálprogramot,
    // másold be. Működik (fehér négyzet egy ablakban)?

    LccWin32 alá elsőnek nem ferdült le, igy a NeHe -> Atomizer példaprogiban szereplő GLUT32.dll linkeltem be. 1 Warningot szól, a prog viszont müxik.
    Igen, a GLUT32.DLL-vel van probléma. Az én gépemen is van vagy 6 féle. Sőt, van freeglut is.

    Ferdítési f.bat file
    @echo off if "%1" == "" goto usage @echo off if "%1" == "" goto usage @C:\Progra~1\LccWin32\Bin\lcc -O -p6 %1.c @C:\Progra~1\Lccwin32\bin\lcclnk -s -subsystem windows %1.obj OPENGL32.LIB GLUT32.LIB %2 %3 %4 %5 %6 %7 %8 %9 @del %1.obj goto fini :usage :fini

    Ezt bedagoltam
    /* A:\>F.BAT minogl Warning "c:\program files\lccwin32\include\gl\glut.h": 549 static 'int function (pointer to void function(int)) glutCreateMenu_ATEXIT_HACK' is not referenced 0 errors, 1 warnings */ #include <windows.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h> #include <stdio.h> #include <stdLIB.h> void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glBegin(GL_POLYGON); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); glFlush (); } void init (void) { glClearColor (0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); init (); glutDisplayFunc(display); glutMainLoop(); return 0; }
    Mutasd a teljes hozzászólást!
  • Már lefordul.
    Most már csak az a baj, hogy nem tudom futtatni. A hiba:
    Unhandled exception at 0x00018774 in grafika.exe: 0xC0000005: Access violation reading location 0x00018774.
    Mutasd a teljes hozzászólást!
  • Ez is DLL hibának tűnik. A Te gépeden van több opengl és glut dll is?
    Mutasd a teljes hozzászólást!
  • Hogy érted hogy több?
    glu32.dll
    GLUT32.dll
    opengl32.dll
    gdi32.dll
    glu.dll
    Ezek vannak a system32-ben.
    Mutasd a teljes hozzászólást!
  • Hi!

    A GL Utility Tools (GLUT) nem szabványos (de ha igen, javítsatok ki).
    Van freeglut (van forráskódja is), ha ilyen problémád van, rakd fel.
    Mutasd a teljes hozzászólást!
  • cszolle nem írnál forrást,h könnyebb legyen megoldani a problémádat? Akkor így könnyebb lenne debuggolni...
    Mutasd a teljes hozzászólást!

  • Az egyik(mert többet is próbáltam):
    Ennél is debuggolásnál Unhandled exception at... a hiba.

    // Friendly.c
    // A Friendly OpenGL Program
    // OpenGL SuperBible, 2nd Edition
    // Richard S. Wright Jr.

    #include <GL/glut.h>



    // Rotation amounts
    static GLfloat xRot = 0.0f;
    static GLfloat yRot = 0.0f;

    // Change viewing volume and viewport. Called when window is resized
    void ChangeSize(GLsizei w, GLsizei h)
    {
    GLfloat nRange = 120.0f;
    // Prevent a divide by zero
    if(h == 0)
    h = 1;

    // Set Viewport to window dimensions
    glViewport(0, 0, w, h);

    // Reset coordinate system
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    // Establish clipping volume (left, right, bottom, top, near, far)
    if (w <= h)
    glOrtho (-nRange, nRange, -nRange*h/w, nRange*h/w, -nRange*2.0f, nRange*2.0f);
    else
    glOrtho (-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange*2.0f, nRange*2.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }

    // This function does any needed initialization on the rendering
    // context. Here it sets up and initializes the lighting for
    // the scene.
    void SetupRC()
    {
    // Light values and coordinates
    GLfloat whiteLight[] = { 0.45f, 0.45f, 0.45f, 1.0f };
    GLfloat sourceLight[] = { 0.25f, 0.25f, 0.25f, 1.0f };
    GLfloat lightPos[] = { -50.f, 25.0f, 250.0f, 0.0f };

    glEnable(GL_DEPTH_TEST); // Hidden surface removal
    glFrontFace(GL_CCW); // Counter clock-wise polygons face out
    glEnable(GL_CULL_FACE); // Do not calculate inside of jet

    // Enable lighting
    glEnable(GL_LIGHTING);

    // Setup and enable light 0
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT,whiteLight);
    glLightfv(GL_LIGHT0,GL_AMBIENT,sourceLight);
    glLightfv(GL_LIGHT0,GL_DIFFUSE,sourceLight);
    glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
    glEnable(GL_LIGHT0);

    // Enable color tracking
    glEnable(GL_COLOR_MATERIAL);

    // Set Material properties to follow glColor values
    glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);

    // Black blue background
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
    }


    // Called to draw scene
    void RenderScene(void)
    {
    float fZ,bZ;

    // Clear the window with current clearing color
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    fZ = 100.0f;
    bZ = -100.0f;

    // Save the matrix state and do the rotations
    glPushMatrix();
    glRotatef(xRot, 1.0f, 0.0f, 0.0f);
    glRotatef(yRot, 0.0f, 1.0f, 0.0f);


    // Set material color, Red

    glColor3f(1.0, 0., 0.0);

    // Front Face ///////////////////////////////////
    glBegin(GL_QUADS);
    // Pointing straight out Z
    glNormal3f(0.0f, 0.0f, 1.0f);

    // Left Panel
    glVertex3f(-50.0f, 50.0f, fZ);
    glVertex3f(-50.0f, -50.0f, fZ);
    glVertex3f(-35.0f, -50.0f, fZ);
    glVertex3f(-35.0f,50.0f,fZ);

    // Right Panel
    glVertex3f(50.0f, 50.0f, fZ);
    glVertex3f(35.0f, 50.0f, fZ);
    glVertex3f(35.0f, -50.0f, fZ);
    glVertex3f(50.0f,-50.0f,fZ);

    // Top Panel
    glVertex3f(-35.0f, 50.0f, fZ);
    glVertex3f(-35.0f, 35.0f, fZ);
    glVertex3f(35.0f, 35.0f, fZ);
    glVertex3f(35.0f, 50.0f,fZ);

    // Bottom Panel
    glVertex3f(-35.0f, -35.0f, fZ);
    glVertex3f(-35.0f, -50.0f, fZ);
    glVertex3f(35.0f, -50.0f, fZ);
    glVertex3f(35.0f, -35.0f,fZ);

    // Top length section ////////////////////////////
    // Normal points up Y axis
    glNormal3f(0.0f, 1.0f, 0.0f);
    glVertex3f(-50.0f, 50.0f, fZ);
    glVertex3f(50.0f, 50.0f, fZ);
    glVertex3f(50.0f, 50.0f, bZ);
    glVertex3f(-50.0f,50.0f,bZ);

    // Bottom section
    glNormal3f(0.0f, -1.0f, 0.0f);
    glVertex3f(-50.0f, -50.0f, fZ);
    glVertex3f(-50.0f, -50.0f, bZ);
    glVertex3f(50.0f, -50.0f, bZ);
    glVertex3f(50.0f, -50.0f, fZ);

    // Left section
    glNormal3f(1.0f, 0.0f, 0.0f);
    glVertex3f(50.0f, 50.0f, fZ);
    glVertex3f(50.0f, -50.0f, fZ);
    glVertex3f(50.0f, -50.0f, bZ);
    glVertex3f(50.0f, 50.0f, bZ);

    // Right Section
    glNormal3f(-1.0f, 0.0f, 0.0f);
    glVertex3f(-50.0f, 50.0f, fZ);
    glVertex3f(-50.0f, 50.0f, bZ);
    glVertex3f(-50.0f, -50.0f, bZ);
    glVertex3f(-50.0f, -50.0f, fZ);
    glEnd();


    glFrontFace(GL_CW); // clock-wise polygons face out

    glBegin(GL_QUADS);
    // Back section
    // Pointing straight out Z
    glNormal3f(0.0f, 0.0f, -1.0f);

    // Left Panel
    glVertex3f(-50.0f, 50.0f, bZ);
    glVertex3f(-50.0f, -50.0f, bZ);
    glVertex3f(-35.0f, -50.0f, bZ);
    glVertex3f(-35.0f,50.0f,bZ);

    // Right Panel
    glVertex3f(50.0f, 50.0f, bZ);
    glVertex3f(35.0f, 50.0f, bZ);
    glVertex3f(35.0f, -50.0f, bZ);
    glVertex3f(50.0f,-50.0f,bZ);

    // Top Panel
    glVertex3f(-35.0f, 50.0f, bZ);
    glVertex3f(-35.0f, 35.0f, bZ);
    glVertex3f(35.0f, 35.0f, bZ);
    glVertex3f(35.0f, 50.0f,bZ);

    // Bottom Panel
    glVertex3f(-35.0f, -35.0f, bZ);
    glVertex3f(-35.0f, -50.0f, bZ);
    glVertex3f(35.0f, -50.0f, bZ);
    glVertex3f(35.0f, -35.0f,bZ);

    // Insides /////////////////////////////
    glColor3f(192/256.0f, 192/256.0f, 192/256.0f);

    // Normal points up Y axis
    glNormal3f(0.0f, 1.0f, 0.0f);
    glVertex3f(-35.0f, 35.0f, fZ);
    glVertex3f(35.0f, 35.0f, fZ);
    glVertex3f(35.0f, 35.0f, bZ);
    glVertex3f(-35.0f,35.0f,bZ);

    // Bottom section
    glNormal3f(0.0f, 1.0f, 0.0f);
    glVertex3f(-35.0f, -35.0f, fZ);
    glVertex3f(-35.0f, -35.0f, bZ);
    glVertex3f(35.0f, -35.0f, bZ);
    glVertex3f(35.0f, -35.0f, fZ);

    // Left section
    glNormal3f(1.0f, 0.0f, 0.0f);
    glVertex3f(-35.0f, 35.0f, fZ);
    glVertex3f(-35.0f, 35.0f, bZ);
    glVertex3f(-35.0f, -35.0f, bZ);
    glVertex3f(-35.0f, -35.0f, fZ);

    // Right Section
    glNormal3f(-1.0f, 0.0f, 0.0f);
    glVertex3f(35.0f, 35.0f, fZ);
    glVertex3f(35.0f, -35.0f, fZ);
    glVertex3f(35.0f, -35.0f, bZ);
    glVertex3f(35.0f, 35.0f, bZ);
    glEnd();


    glFrontFace(GL_CCW); // Counter clock-wise polygons face out


    // Restore the matrix state
    glPopMatrix();

    // Flush drawing commands
    glutSwapBuffers();
    }


    void SpecialKeys(int key, int x, int y)
    {
    if(key == GLUT_KEY_UP)
    xRot-= 5.0f;

    if(key == GLUT_KEY_DOWN)
    xRot += 5.0f;

    if(key == GLUT_KEY_LEFT)
    yRot -= 5.0f;

    if(key == GLUT_KEY_RIGHT)
    yRot += 5.0f;

    if(xRot > 356.0f)
    xRot = 0.0f;

    if(xRot < -1.0f)
    xRot = 355.0f;

    if(yRot > 356.0f)
    yRot = 0.0f;

    if(yRot < -1.0f)
    yRot = 355.0f;

    // Refresh the Window
    glutPostRedisplay();
    }


    // Main program entry point
    int main(void)
    {
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
    glutCreateWindow("Ortho");
    glutReshapeFunc(ChangeSize);
    glutSpecialFunc(SpecialKeys);
    glutDisplayFunc(RenderScene);

    SetupRC();

    glutMainLoop();

    return 0;
    }

    Mutasd a teljes hozzászólást!
  • sztem ha lefordul a progid rendesen akkor az opengl használati módjával van a gond(nem dll meg ilyenek...), vagyis szemantikai hiba van benne...
    bár mondjuk ha ezt a forrást kopiztad valami OpenGL SuperBible szerű izéből ami valószínűleg jónak kell lennie, szal akkor lehet,h fordító/linker beállítás bibi van. a glut23.lib-et belinkelted? ha nem akkor az include után:

    #pragma comment(lib,"glut32.lib")

    Természetesen a glut32.lib-et a visual studio beállításainál beállított library könyvtárba kell beraknod.

    Ha ez ok és nem yo akkor mondd el részletesen a fordító configját, vagy ha nincs kedved hozzá akkor talán az is segíthet a netről beszerzel új opengl-es libraryket ami a progihoz kell(glut32.dll,(nem tudom milyen más dl kell =) ).
    De ha eldobod ímélben az egész solution-t akkor megnézem szívesen!
    Mutasd a teljes hozzászólást!
  • ja vektor@fbi.hu
    Mutasd a teljes hozzászólást!
  • Bocs a hosszú szünetért. Időközben DevCpp-ben sikerült megolgani a glutos dolgokat, így aztán nem foglalkoztam a VC++-al. Le is töröltem. Nincs türelmem hozzá. Azért mindenkinek nagyon köszönöm a segítséget.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd