webbrowser.obj : error LNK2005: "char * ga" (?ga@@3PADA) already defined in MainFrm.obj
webbrowserView.obj : error LNK2005: "char * ga" (?ga@@3PADA) already defined in MainFrm.obj
Debug/webbrowser.exe : fatal error LNK1169: one or more multiply defined symbols found
用向导创见了单文档的程序,在mainfrm.h中加入全局变量 char ga【255】,在webbrowserView.cpp,mainfrm.cpp中要使用,结果就报上面的错了 在webbrowserView.cpp,mainfrm.cpp前,都要include mainfrm.h,所以说我重复定义了??那在mainfrm.h下面的东西多着呢,为什么其他的不算重复定义??
    还有,如果我要实现我的目的:在webbrowserView.cpp,mainfrm.cpp中要使用ga这个全局变量,我因该把它放在哪里定义才正确呢?   如果大家听不明白,看看我的附件吧,我说的程序就在里面。
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=3462964

解决方案 »

  1.   

    变量不能在头文件定义
    我本来篇文章http://blog.vckbase.com/arong/archive/2004/05/28/294.aspx但是访问不了啦。一个全局变量应该在cpp文件定义,然后在头文件用extern关键字声明
    cpp中char * g_pMyVar=NULL;h中extern char * g_pMyVar;
      

  2.   

    一般我是在stdafx.cpp里定义变量int var;
    在stdafx.h里声明extern int var;
      

  3.   

    头文件中声明全局变量:
    extern char* ga;
    其中一个cpp文件中定义变量:
    char* ga;
      

  4.   

    不能在类体外定义的,可能是MFC的框架的原因吧, 你要定义在CWebbrowserApp 里面定义好你的全局函数,在要使用的类里面想用的话 extern CWebbrowserApp theApp;(vc03及以上都帮你加好了)再theApp.ga 吧,  
      

  5.   

    这跟MFC框架无关,出现问题的原因是
    如果你在头文件中定义全局变量,如果这个文件被不同cpp文件包含,则他会在每个cpp文件中定义一个拷贝,导致重复定义(所谓包含等于把该文件插入到对应的cpp文件中)
      

  6.   

    5楼正解
    在Stdafx.h内定义extern char ga[255];
    然后再从你的某个.cpp里面定义char ga[255];
      

  7.   

    全局变量要声明的  在.CPP 文件中加上extern char.....
    我不知道你用的是否是VC2003   你可以直接在.CPP 文件的最开始直接定义  char...而不必在.h文件中 定义 另外重复定义还有另外一种情况   这个可能与你这个无关   就是你的头文件a.h里定义了一个  完后另一个头文件b.h包含了这个a.h头文件  而在b.h中你又定义了刚才定义那个 这样也会出错