Archived

This topic is now archived and is closed to further replies.

Ferinorius

simple: saving window_handle to a global

Recommended Posts

Ok, this isn''t a really hard question, but I am having a problem with my program. How do I save my window handle to a global, to be used throughout a few different header files? The window handle will be saved into a global that is referenced in a central header file that defines a bunch of other globals. It also has all the include files and such that is needed for all the other files. What seems to be going on is that as i declare the variables in the global header file, they are still being declared else where. I get linker errors saying things like "redefinition, main_window_handle already defined in GameEngine.cpp" crap. Well, i search all throughout the workspace and project, and find only the main_window_handles where they are expected to be. In the Global headerfile, and where they are actually used. So what can the problem be? When I click on the error in the error window in Vis. C++, it takes me to a blank line....what the hell? Neo-Toshi - The City That Never Sleeps

Share this post


Link to post
Share on other sites
In the .h file that you are including everywhere you should have
extern HWND g_hwnd;

In ONE (and only one) of your .cpp files, you should have a line like
HWND g_hwnd = NULL; // or whatever you want to initialize it to

Share this post


Link to post
Share on other sites
Ok, at least it isnt linker errors anymore, but I am still getting these redefinition errors for these seemingly invisible HWND main_window_handle; i do searches, i look, all over.

Im going to try one more thing...

Edit:

Ok, deleted some older source files just incase they were being included still in the build, and that didnt work.

I have the browser information setup, so when I rightclick and select go to Definition of main_window_handle, it takes me to a blank spot on the scree, right before the
#endif of a headerfile that has nothing to do with this. It is also the same thing that was giving me the linker errors "already defined in balhdebalh.obj."

Here is the error...alas:
  
C:\Documents and Settings\Ferinorius\My Documents\Important Documents\LegionTOD\GameEngine.cpp(13) :
error C2374: 'main_window_handle' : redefinition; multiple initialization
c:\documents and settings\ferinorius\my documents\important documents\legiontod\globalhub.h(46) :
see declaration of 'main_window_handle'
C:\Documents and Settings\Ferinorius\My Documents\Important Documents\LegionTOD\GameEngine.cpp(14) :
error C2374: 'main_instance' : redefinition; multiple initialization
c:\documents and settings\ferinorius\my documents\important documents\legiontod\globalhub.h(47) :
see declaration of 'main_instance'


Edited by - Ferinorius on January 10, 2002 8:02:45 PM

Share this post


Link to post
Share on other sites
quote:
Original post by Ferinorius
...it takes me to a blank spot on the scree, right before the
#endif of a headerfile that has nothing to do with this.

Which suggests that your inclusion guards may be "funky."

Also read up on the extern keyword.

[ GDNet Start Here | GDNet FAQ | MS RTFM | STL | Google ]
Thanks to Kylotan for the idea!

Share this post


Link to post
Share on other sites
Well, what I discovered in my sher tiredness and overexhuastion, I figured out what I was doing.

this was in the global header file...
  
extern HWND main_window_handle = NULL;


and in one of my files i have this...

HWND main_window_handle = NULL;


Yeah, all I had to do was take the
=NULL;    
off of the end of the declaration in the global file, and all was well.

THanks for the help, sorry for the stupidity.

I once said: "My stupidity only shows when I am around intelligent people!"



Neo-Toshi - The City That Never Sleeps


Edited by - Ferinorius on January 13, 2002 3:39:16 PM

Share this post


Link to post
Share on other sites