Dateien



  • hallo
    Also, erstmal alle eine Panzerfaust rausholen und damit auf MS VS 2005 schießen.
    ne Scherz. aber ich zumindest bin kurz vorm ausrasten. Der (die) Fehler basiert 100% auf meiner unwissenheit, aber egal.
    Hab ein wenig mit HGE (Diese 2D-Spiele-Engine) Programmiert, jetzt wollte ich es mal in einem Child-fenster ausprobieren. Hab dabei auch noch VS eine Windows-Anwedung erstellen lassen, mit stdafx u.ä. Also kein eigenbau mit nur einer Datei^^"".
    Nun hab ich ein problem: ich hab überhaupt keine ahnung, was ich wohin includen soll, egal, was ich ausprobiert hab, es scheitert fatal. folgende Dateien müssen mit rein:

    hgeh.h // hier sind die Deklarationen von hge-objekten/Funktionen drin
    hgec.cpp // hier sind Definitionen der Funktionen

    der Rest ist das von VS erstellte. in StdAfx.h sind auch die HGE-header, um die Engine zu verwenden, in HGEinCW.cpp ist die Main-Funktion, in HGEinCW.h hab ich noch
    #include "hgeh.h"
    hingetan,in hgec.cpp steht
    #include "stdafx.h"
    #include "hgeh.h"
    am anfang, in HGEinCW.cpp ist folgendes eingebunden:
    #include "stdafx.h"
    #include "HGEinCW.h"

    ich bekomme Linker Fehler:

    hgec.obj : error LNK2005: "struct hgeQuad * Quad" (?Quad@@3PAUhgeQuad@@A) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "class hgeSprite * spr" (?spr@@3PAVhgeSprite@@A) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "class hgeSprite * spt" (?spt@@3PAVhgeSprite@@A) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "class hgeSprite * tar" (?tar@@3PAVhgeSprite@@A) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "class hgeFont * fnt" (?fnt@@3PAVhgeFont@@A) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "class hgeParticleSystem * * par" (?par@@3PAPAVhgeParticleSystem@@A) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "unsigned long tex" (?tex@@3KA) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "unsigned long target" (?target@@3KA) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "unsigned long snd" (?snd@@3KA) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "struct GSpace GlobalSpace" (?GlobalSpace@@3UGSpace@@A) ist bereits in HGEinCW.obj definiert.
    hgec.obj : error LNK2005: "class HGE * hge" (?hge@@3PAVHGE@@A) ist bereits in HGEinCW.obj definiert.
    

    hier nochmal meine hgeh.h und HGEinCW.h:

    // hgeh.h
    HGE *hge=0;
    
    hgeQuad				Quad[4];
    hgeSprite			*spr;
    hgeSprite			*spt;
    hgeSprite			*tar;
    hgeFont				*fnt;
    hgeParticleSystem	*par[4];
    
    HTEXTURE tex;
    
    HTARGET target;
    
    HEFFECT snd;
    
    enum{GSX=0, GSY, GSDX, GSDY, GSSPD, GSFR};
    
    struct GSpace
    {
    	DWORD space[8];
    };
    
    GSpace GlobalSpace;
    
    void boom(int, int, int);
    
    bool FrameFunc();
    bool RenderFunc();
    bool FocusGainFunc();
    void writeGS(void*,short);
    float GetGSfloat(short);
    int GetGSint(short);
    
    POINT QuadFromMP(float x, float y, hgeQuad *Quad);
    
    //HGEinCW.h
    #pragma once
    #pragma comment(lib, "hge.lib")
    #pragma comment(lib, "hgehelp.lib")
    
    #include "resource.h"
    #include "hgeh.h"
    

    hoffe, ihr könnt mir irgendwie helfen



  • Mach mal in deine Headerdateien ganz oben das rein:

    #pragma once
    

    🙂



  • ne, hilft nicht^^". Ich mein - wenn das doch doppelt definiert wäre, würde der compiler meckern, nicht der linker.

    Jap - hab ausprobiert - klappt nicht 😞

    Kann es noch etwas anderes sein?





  • super, danke.

    hmmm... nun meckert er wegen funktionen ^^". kann man das bei Funktionen genauso machen?



  • Azrael, il Meraz schrieb:

    kann man das bei Funktionen genauso machen?

    Ja.



  • thank you very much ^^"


Anmelden zum Antworten