Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Code Block's Bład kompilatora


Rekomendowane odpowiedzi

Opublikowano

Tak jak w temacie przejdę do rzeczy, treść błędu:

multiple definition of 'readstr(_iobuf*,char*)'

Kod(Bład w 38 lini):

#include<windows.h>
#include<stdlib.h>
#include<stdio.h>


#define BITMAP_ID 0x4D42


#include<gl/gl.h>
#include<gl/glu.h>


typedef struct vertex
{
    float x,y,z;
    float u,v;
}VERTEX;


typedef struct triangle
{
    VERTEX vertex[3];
}TRIANGLE;


typedef struct sector
{
    TRIANGLE* triangles;
    int numtriangles;
}SECTOR;


SECTOR sector1;


static HDC      hdc;
static HGLRC    hrc;
HWND     hwnd;
MSG      msg;
HDC g_HDC;


LPSTR name = "Program Kargula";


void readstr(FILE* File, char* string)
{
    do
    {
        fgets(string,300,File);
    }while((string[0]=='/') || (string[0]=='\n'));
    return;
}


void SetupWorld()
{
    FILE *filein;
    filein = fopen("world.txt", "rt");


    int numtriangles;
    char oneline[255];


    float x,y,z,u,v;


    sector1.triangles = new TRIANGLE[numtriangles];
    sector1.numtriangles = numtriangles;


    readstr(filein,oneline);
    sscanf(oneline, "NUMPOLLIES %d\n", &numtriangles);


    for (int triloop = 0; triloop < numtriangles; triloop++)
        {
            for (int vertloop = 0; vertloop < 3; vertloop++)
            {
                readstr(filein,oneline);


                sscanf(oneline, "%f %f %f %f %f", &x, &y, &z, &u, &v);


                sector1.triangles[triloop].vertex[vertloop].x = x;
                sector1.triangles[triloop].vertex[vertloop].y = y;
                sector1.triangles[triloop].vertex[vertloop].z = z;
                sector1.triangles[triloop].vertex[vertloop].u = u;
                sector1.triangles[triloop].vertex[vertloop].v = v;
            }
        }


    fclose(filein);
    return;
}


void SetupPixelFormat(HDC hdc)
{
    int pixelformat;


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


    pixelformat = ChoosePixelFormat(hdc,&pfd);
    SetPixelFormat(hdc,pixelformat,&pfd);


}


LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam){


    int width;
    int height;


    switch(msg)
    {
        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);
        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.0,(GLfloat)width/(GLfloat)height,0.1,100.0);


            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
        break;


        default:
            break;
    }
    return DefWindowProc(hwnd,msg,wParam,lParam);
}


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX window;


    window.cbSize            = sizeof(WNDCLASSEX);
    window.style             = CS_VREDRAW | CS_HREDRAW;
    window.lpfnWndProc       = (WNDPROC) WndProc;
    window.cbClsExtra        = 0;
    window.cbWndExtra        = 0;
    window.lpszMenuName      = NULL;
    window.lpszClassName     = name;
    window.hbrBackground     = (HBRUSH) (COLOR_WINDOW+1);
    window.hIcon             = LoadIcon(NULL,IDI_APPLICATION);
    window.hCursor           = LoadCursor(NULL,IDC_ARROW);
    window.hIconSm           = LoadIcon(NULL,IDI_APPLICATION);
    window.hInstance         = hInstance;


    if(!RegisterClassEx(&window)){
        MessageBox(NULL,"Nie mozna utworzyc klasy okienka","Error 404",MB_OK);
        return 0;
    }else{
        printf("Dziala 1");
    }


    hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,
                          name,
                          name,
                          WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_SYSMENU,
                          600, 600,
                          CW_USEDEFAULT,CW_USEDEFAULT,
                          NULL,
                          NULL,
                          hInstance,
                          NULL);


    if(!hwnd){
        MessageBox(NULL,"Nie mozna stworzyc okna","Error 404",MB_OK);
    }else{
        printf("Dziala 2");
    }


    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd);




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


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


        SwapBuffers(g_HDC);
    }
    return msg.wParam;
}

Błąd występuje po każdej stworzonej funkcji i wskazuje na klamrę '{'.

Oczywiście program jest nie skończony ale to nie robi różnicy.

 

Dodam że problem nie dotyczy tylko OpenGl'a ale również podstawowej aplikacji konsolowej "Hello World".

 

Z góry dziękuje za pomoc, bo osobiście próbowałem już chyba wszystkiego.

 

ywug.jpg



Smacznego

Opublikowano

Prawdopodobnie masz do projektu dołączone pliki, o któych nie wiesz, że są dołączone :)

Prześledź dokładnie listę dołączonych plików ( SHIFT + F2 albo View > Manager ) i wyklucz te, które mogą zawierać duplikaty twoich funkcji. 

Dotyczy to też nagłówków. 

Ta sygnatura jest pusta.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...