Linker fehler, ich sterb noch...



  • Ich hab gedacht, ich arbeite mich mal schnell in DirectX ein. Gin Anfangs ganz gut, als ich noch den ganzen Code in main.cpp gepastet hab. Nun wollt ich ein bisschen Funktionen auslagern, alles ein bisschen schöner machen. Nur die Linker Fehler gehen mir nun sowas auf den Sack und ich kann mir nicht erklären, warum das nicht gehen soll.

    #include <windows.h>
    #include "GrafikenAnzeigen.h"
    
    int WINAPI WinMain ....
    { //hier steht kein DirectX Code }
    

    GrafikenAnzeigen.h

    #include <ddraw.h>
    
    LPDIRECTDRAW7 lpDirectDraw;
    LPDIRECTDRAWSURFACE7 lpddsPrimary;
    DDSURFACEDESC2 ddsd;//Primary Surface
    LPDIRECTDRAWSURFACE7 lpddsBack;
    DDSCAPS2 ddscaps; //BackBuffer
    LPDIRECTDRAWSURFACE7 lpddsBitmap;//ein Bild
    HRESULT ddrval;
    
    void ClearScreen();
    void aufraeumen();
    bool DirectXStart(HWND hwnd);
    

    GrafikenAnzeigen.cpp

    #include "GrafikenAnzeigen.h"
    bool DirectXStart(HWND hwnd)
    {
        ddrval = DirectDrawCreateEx(NULL, (VOID**)&lpDirectDraw, IID_IDirectDraw7, NULL);
        if (ddrval != DD_OK)
            return false;
    }
    

    main.obj : error LNK2005: "struct IDirectDraw7 * lpDirectDraw" (?lpDirectDraw@@3PAUIDirectDraw7@@A) already defined in GrafikenAnzeigen.obj

    Helft mir! Die Linker Fehler bringen mich noch um den Verstand! 😡 😡



  • Dir fehlt ein Include-Guard in den Headern, behebe erstmal das und dann sehen wir weiter.
    btw. wärst du damit gut beraten, wenn du die hässlichen MS-APIs erstmal auf die Seite legst und Konsolenprogramme schreibst. Das macht zwar weniger Spaß, aber du lernst das Programmieren gescheit...
    Irgendwann rennst du sonst gegen ne Mauer.


Anmelden zum Antworten