C++ linking
I've had this error for 2 days now I'm about to lose the plot!
error LNK2005: "struct IDirectInputDevice8A * InputDevice" already defined in...
and
error LNK2005: "struct IDirect3DDevice9 * Device" already defined in...
The way my include headers are structured is that d3dx9.h & dinput.h have to be included twice when linking, but I thought the #ifndef statement should mean this wont be a problem?
I've really run out of ideas
?????
Any ideas would be much appreciated.
Did you define InputDevice and Device in your header files ? You only have to declare them, then define them in a source file.
Example:
Edit:
You may also want to read here
http://www.gamedev.net/reference/articles/article1798.asp
Example:
// Device.h#ifndef DEVICE_H#define DEVICE_H...// declare the pointerextern struct IDirectInputDevice8A* InputDevice;...#endif// Device.cpp#include "Device.h"// define the pointerstruct IDirectInputDevice8A* InputDevice;
Edit:
You may also want to read here
http://www.gamedev.net/reference/articles/article1798.asp
Do not define variables in header files. If you do, each translation unit that includes that header generates a copy of the variable. The linker then sees all those identically-named symbols and tells you it can't do anything with that. it Iis not the linker's job to resolve such conflicts.
Declare the variable in the header file, define it in a (single) source file.
Declare the variable in the header file, define it in a (single) source file.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement