以下两个步骤
1。
在任何一个文件中定义,一般在XXXAPP.CPP中。
例:int g_Data; 
2。
在XXXAPP.H或STDAFX.H中写外部变量。
例:extern int g_Data; 

解决方案 »

  1.   

    在那个文件中用到就在那个文件中定义,如果在别的文件中也要用到,用extern声明。
      

  2.   

    楼上二位老兄,说得对!
      1:在.h文件中只能是extern 声明变量,并不分配空间!
      2:在.cpp文件中才定义变量分配空间!
      3:另外记住少用全局变量
      4: extern 的作用只是告诉编译器此出的变量是外部引用,
                 在连接时(link)统一分配一次空间!
          呵呵,穷的冒汗!
      

  3.   

    我在MainFrm.cpp中如下定义
    typedef struct
    {
    unsigned int RAM; //缓冲区大小
    unsigned int frag;  //频率
    unsigned int lab; //A B通道 A=0 B=1 
    } AVEall;
    typedef struct
    {
    unsigned int vol; //电压 0=100V 1=10v ...10MV
    BOOL ModeAD; //交直流AC DC DC=1

    } AVEpar;extern AVEall AVE;
    extern AVEpar typeAVE_A;
    extern AVEpar typeAVE_B;
    extern WORD adca[1024*64];
    extern WORD adcb[1026*64];
    编译时无法通过
    MainFrm.obj : error LNK2001: unresolved external symbol "unsigned short *  adcb" (?adcb@@3PAGA)
    MainFrm.obj : error LNK2001: unresolved external symbol "unsigned short *  adca" (?adca@@3PAGA)
    MainFrm.obj : error LNK2001: unresolved external symbol "struct AVEall  AVE" (?AVE@@3UAVEall@@A)
    MainFrm.obj : error LNK2001: unresolved external symbol "struct AVEpar  typeAVE_A" (?typeAVE_A@@3UAVEpar@@A)
    MainFrm.obj : error LNK2001: unresolved external symbol "struct AVEpar  typeAVE_B" (?typeAVE_B@@3UAVEpar@@A)
    Debug/SoftwAVE.exe : fatal error LNK1120: 5 unresolved externals
      

  4.   

    在extern AVEall AVE;
    之前要保证已经有以下定义
    AVEall AVE;
    其它的一样;
      

  5.   

    首先要弄清楚你在MainFrm.cpp中是定义变量?还是外部引用变量?如果是定义变量,还要extern干嘛?如果是外部引用,那么这几个全局变量必须在其它文件中有定义。