Kompilator pluje o wszystko..

2011-05-23 15:03
0

Napisałem prostą aplikację okienkową obracającą trójkąt wokół osi Oz, oto kod:

#define WIN32_LEAN_AND_MEAN

#include <Windows.h>
#include <gl\GL.h>
#include <gl\GLU.h>

float angle = 0.1f;
HDC g_HDC;

void SetupPixelFormat(HDC hDC)
{
    int nPixelFormat;

    static PIXELFORMATDESCRIPTOR pfd = 
    {
        sizeof(PIXELFORMATDESCRIPTOR),
        1,
        PFD_DRAW_TO_WINDOW |
        PFD_SUPPORT_OPENGL |
        PFD_DOUBLEBUFFER,
        PFD_TYPE_RGBA,
        32,
        0, 0, 0, 0, 0, 0,
        0,
        0,
        0,
        0,
        0, 0, 0, 0,
        16,
        0,
        0,
        PFD_MAIN_PLANE,
        0,
        0, 0
    };

    nPixelFormat = ChoosePixelFormat(hDC, &pfd);

    SetPixelFormat(hDC, nPixelFormat, &pfd);
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HGLRC hRC;
    static HDC hDC;
    int width, height;

    switch(message)
    {
    case WM_CREATE:
        hDC = GetDC(hwnd);
        g_HDC = hDC;
        SetupPixelFormat(hDC);

        hRC = wglCreateContext(hDC);

        wglMakeCurrent(hDC, hRC);

        return 0;
        break;

    case WM_CLOSE:
        wglMakeCurrent(hDC, NULL);
        wglDeleteContext(hRC);

        PostQuitMessage(0);

        return 0;
        break;

    case WM_SIZE:
        height = HIWORD(lParam);
        width = LOWORD(lParam);

        if(height == 0)
            height = 1;

        glViewport(0, 0, width, height);

        glMatrixMode(GL_PROJECTION);
            glLoadIdentity();

        gluPerspective(45.0f, (GLfloat)width/(GLfloat)height, 1.0f, 1000.0f);

        glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();

        return 0;
        break;

    default:
        break;
    }

    return (DefWindowProc(hwnd, message, wParam, lParam));
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    WNDCLASSEX windowClass;
    HWND hwnd;
    MSG msg;
    bool done;

    windowClass.cbSize = sizeof(WNDCLASSEX);
    windowClass.style = CS_HREDRAW | CS_VREDRAW;
    windowClass.lpfnWndProc = WndProc;
    windowClass.cbClsExtra = 0;
    windowClass.cbWndExtra = 0;
    windowClass.hInstance = hInstance;
    windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowClass.hbrBackground = NULL;
    windowClass.lpszMenuName = NULL;
    windowClass.lpszClassName = L"Moja Klasa";
    windowClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO);

    if(!RegisterClassEx(&windowClass))
        return 0;

    hwnd = CreateWindowEx(NULL,
        L"Moja Klasa",
        L"Aplikacja OpenGL",
        WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_SYSMENU | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
        100, 100,
        400, 400,
        NULL,
        NULL,
        hInstance,
        NULL);

    if(!hwnd)
        return 0;

    ShowWindow(hwnd, SW_SHOW);
    UpdateWindow(hwnd);

    done = false;

    while(!done)
    {
        PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);

        if(msg.message == WM_QUIT)
            done = true;
        else
        {
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glLoadIdentity();

            angle += 0.1f;
            if(angle >= 360.0f)
                angle = 0.0f;

            glTranslatef(0.0f, 0.0f, -5.0f);
            glRotatef(angle, 0.0f, 0.0f, 1.0f);

            glColor3f(1.0f, 0.0f, 0.0f);
            glBegin(GL_TRIANGLES);
                glVertex3f(0.0f, 0.0f, 0.0f);
                glVertex3f(1.0f, 0.0f, 0.0f);
                glVertex3f(1.0f, 1.0f, 0.0f);
            glEnd();

            SwapBuffers(g_HDC);

            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    return msg.wParam;
}

A oto co pluje się kompilator

Microsoft Visual Studio 2010 napisał(a)

1>------ Build started: Project: Triangle, Configuration: Debug Win32 ------
1>Build started 2011-05-23 14:56:56.
1>InitializeBuildStatus:
1> Touching "Debug\Triangle.unsuccessfulbuild".
1>ClCompile:
1> main.cpp
1>ManifestResourceCompile:
1> All outputs are up-to-date.
1>main.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "long stdcall WndProc(struct HWND ,unsigned int,unsigned int,long)" ([email protected]@[email protected]@[email protected])
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function "long stdcall WndProc(struct HWND
,unsigned int,unsigned int,long)" ([email protected]@[email protected]@[email protected])
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function "long stdcall WndProc(struct HWND ,unsigned int,unsigned int,long)" ([email protected]@[email protected]@[email protected])
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function "long stdcall WndProc(struct HWND
,unsigned int,unsigned int,long)" ([email protected]@[email protected]@[email protected])
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function "long stdcall WndProc(struct HWND ,unsigned int,unsigned int,long)" ([email protected]@[email protected]@[email protected])
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function "long stdcall WndProc(struct HWND
,unsigned int,unsigned int,long)" ([email protected]@[email protected]@[email protected])
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function "long stdcall WndProc(struct HWND *,unsigned int,unsigned int,long)" ([email protected]@[email protected]@[email protected])
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function [email protected]
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function [email protected]
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function [email protected]
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function [email protected]
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function [email protected]
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function [email protected]
1>main.obj : error LNK2019: unresolved external symbol imp[email protected] referenced in function [email protected]
1>c:\users\mjay\documents\visual studio 2010\Projects\Triangle\Debug\Triangle.exe : fatal error LNK1120: 14 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.56
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

W czym może być problem?


Gdy się nie wie, co się robi, to dzieją się takie rzeczy, że się nie wie, co się dzieje ;-)

Pozostało 580 znaków

2011-05-23 15:43
0

Nie linkujesz biblioteki od gluta. Musisz linkerowi podać, że ma zlinkować jeszcze tą bibliotekę


Nie działa w dalszym ciągu, powiedz mi jeszcze gdzie wkleić .dll-ki, bo były pliki nagłówkowe, biblioteki ale dodatkowo były biblioteki dynamiczne, ale nie mam pojęcia gdzie je wkleić a na google'ach tylko odnośnie cheatów counter-strike'a jest - MJay 2011-05-23 16:19

Pozostało 580 znaków

2011-05-23 16:04
0

chodzi o GLAUX.h?
Nie mam tego w folderze gl, muszę to w takim ukladzie sciagnąć skądś


Gdy się nie wie, co się robi, to dzieją się takie rzeczy, że się nie wie, co się dzieje ;-)

Pozostało 580 znaków

2011-05-23 16:14

To są bodajże opengl32.lib i glu32.lib. Nie chodzi o include, ale o ustawienia linkera


Pozostało 580 znaków

2011-05-23 16:24
0

O ok poradziłem sobie. Dzięki.


Gdy się nie wie, co się robi, to dzieją się takie rzeczy, że się nie wie, co się dzieje ;-)

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0