Hej! Det beror på att de globala variablerna redan skapats när headern inkluderats i en annan fil, finns en bra tutorial här: http://www.gamedev.net/reference/programming/features/orgfiles/default.asp om hur man bör organisera sina filer. Okej, så #ifndef tar inte bort alla möjligheter till detta? #ifndef hindrar bara koden i headerfilen att komma med flera gånger i <b>samma</b> källkodsfil. Ett exempel där detta kan ske är om fil A inkluderar fil B och fil C, och fil B inkluderar fil C. Då kommer fil C med två gånger.Linking problem, already defined!
Såfort jag använder en headerfil jag gjort som innehåller variabler på mer än 1 fil så får jag linkingproblem!
"Error 1 error LNK2005: "struct HWND__ * gHWND" (?gHWND@@3PAUHWND__@@A) already defined in initwinclass.obj main.obj "
Vad beror detta på?
Funktioner och klasser fungerar ....
Headerfilen som felar ser ut såhär:
#ifndef _MAINWINCLASS_H
#define _MAINWINCLASS_H
#define FALSE 0
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <gl\gl.h>
#include <gl\glu.h>
#pragma comment (lib,"OpenGL32.lib")
#pragma comment (lib,"Glu32.lib")
HWND gHWND;
HGLRC gRC =NULL;
HDC gDC=NULL;
int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow);
LRESULT CALLBACK WndProc( HWND hWnd, UINT Msg, WPARAM wParam,LPARAM lParam);
int messageloop();
BOOL Render(VOID);
VOID UserResize(int width, int height);
BOOL InitGl(int width, int height);
BOOL InitWin(char *Title, int width, int height);
#endif
jag vill alltså kunna använda mina globala variabler (gHWND, gRC, gDC) i flera filer, tar jag bort dessa funkar det!
Tacksam för svar!
/MVH MagnusSv: Linking problem, already defined!
För att fixa det kan du deklarera variablerna som extern och definera dem i cpp-filerna.
/PeterSv:Linking problem, already defined!
funkade med extern iaf, ska läsa på, man lär väll sig med tiden ;)
/MVHSv: Linking problem, already defined!