使用extern的问题,一个或多个多重定义的问题的解决

    技术2022-05-11  101

    详细请点:http://topic.csdn.net/t/20030604/15/1875272.html 

     

    以下是部分文件代码:     ----------------------     main.cpp     //包含     #include   "Init.h"     #include   "GEngine_main.h"             //     //通用变量     //         LPDIRECTDRAWSURFACE   lpDDSSour=NULL,   lpDDSTemp=NULL; //临时页面     LPDIRECTDRAWSURFACE   lpDDSBackGround; //   背景页面     ...   ...                         -----------------     init.cpp         /***************************************     *     *     *     *         ***************************************/         #include"Init.h"         ...   ...                             ----------------------     GEngine_main.cpp         //包含     #include   "Init.h"     #include   "GEngine_main.h"         ...   ...                                 ----------------------     init.h         #ifndef   INIT_H     #define   INIT_H           #include   <ddraw.h>         //变量     //#define   PICMAX                         100     //图像最大数         LPDIRECTDRAWSURFACE   lpDDSPic[100]; //   图像         //函数     void   ReadBitmap(void);       //读入图像         #endif       //INIT_H                             ----------------------     GEngine_main.h         #ifndef   GENGINE_MAIN_H     #define   GENGINE_MAIN_H         #include   <windows.h>     #include   <ddraw.h>         LPDIRECTDRAWSURFACE   lpDDS_BackGround; //   背景层     LPDIRECTDRAWSURFACE   lpDDS_Scenery;         //   景物层     LPDIRECTDRAWSURFACE   lpDDS_Fairy;         //   精灵层             //extern   LPDIRECTDRAWSURFACE   lpDDSPic[100];         void   GEMain(void);       //主   GameEngine     void   BuildBackGround(void);       //生成背景         #endif                             ------------------     main.h     #ifndef   MAIN_H     #define   MAIN_H         #include   <ddraw.h>         #define   ScreenWidth 640 //游戏区宽度     #define   ScreenHeight   480 //游戏区高度         ...   ...     #endif                     -------------------         报错内容:     Init.obj   :   error   LNK2005:   "struct   IDirectDrawSurface   *   *   lpDDSPic"   (?lpDDSPic@@3PAPAUIDirectDrawSurface@@A)   已经在   GEngine_main.obj   中定义     main.obj   :   error   LNK2005:   "struct   IDirectDrawSurface   *   lpDDS_BackGround"   (?lpDDS_BackGround@@3PAUIDirectDrawSurface@@A)   已经在   GEngine_main.obj   中定义     main.obj   :   error   LNK2005:   "struct   IDirectDrawSurface   *   lpDDS_Fairy"   (?lpDDS_Fairy@@3PAUIDirectDrawSurface@@A)   已经在   GEngine_main.obj   中定义     main.obj   :   error   LNK2005:   "struct   IDirectDrawSurface   *   *   lpDDSPic"   (?lpDDSPic@@3PAPAUIDirectDrawSurface@@A)   已经在   GEngine_main.obj   中定义     main.obj   :   error   LNK2005:   "struct   IDirectDrawSurface   *   lpDDS_Scenery"   (?lpDDS_Scenery@@3PAUIDirectDrawSurface@@A)   已经在   GEngine_main.obj   中定义     Debug/KLDT.exe   :   fatal   error   LNK1169:   找到一个或多个多重定义的符号      


    最新回复(0)