编译显示信息如下:
--------------------Configuration: Dhcp_Client - Win32 Debug--------------------
Linking...
Dhcp_ClientDlg.obj : error LNK2005: "unsigned short *  MAC_Pool" (?MAC_Pool@@3PAGA) already defined in Dhcp_Client.obj
Debug/Dhcp_Client.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.Dhcp_Client.exe - 2 error(s), 0 warning(s)
但是对MAC_Pool的定义喝应用如下,哪位大侠帮我看看。Searching for 'MAC_Pool'...
.....\Dhcp_Client003\DhcpThread.cpp(32): client_MAC[0] = (MAC_Pool[count] >>8)&0xFF;
.....\Dhcp_Client003\DhcpThread.cpp(33): client_MAC[1] = (MAC_Pool[count] )&0xFF;
.....\Dhcp_Client003\DhcpThread.h(152):extern WORD16 MAC_Pool[1024];
.....\Dhcp_Client003\Dhcp_ClientDlg.cpp(215): MAC_Pool[i] = temp1;
.....\Dhcp_Client003\Dhcp_ClientDlg.cpp(281):        if(0 == memcmp(pbDestMac, &MAC_Pool[bLoop], 2))
.....\Dhcp_Client003\Dhcp_ClientDlg.h(23):WORD16 MAC_Pool[1024];
6 occurrence(s) have been found.

解决方案 »

  1.   

    WORD16 MAC_Pool[1024];
    定义在头文件里? 不行的,放在某源文件内
      

  2.   

    Dhcp_Client.h(或者是cpp)里是不是已经有client_MAC的定义了?
      

  3.   

    .....\Dhcp_Client003\Dhcp_ClientDlg.h(23):WORD16 MAC_Pool[1024];
    6 occurrence(s) have been found.
    在头文件里定义了全局变量,如果包含这个头文件多次,就会重复定义建议在.c.cpp中定义,在.h中声明
      

  4.   

    .h
    extern WORD16 MAC_Pool[];.cpp
    WORD16 MAC_Pool[1024];
      

  5.   

    编译信息反映的问题是unsigned short *  MAC_Pool的重复定义
    另外你要把声明和定义的概念不能混淆。声明是在.h文件对变量的说明,可以添加extern修饰符进行作用域说明
    定义是.cpp文件中变量生成(内存中开辟空间)的说明。你的问题是由于>1个cpp文件包含了MAC_Pool。
      

  6.   

    unsigned short *  MAC_Pool的重复定义
      

  7.   

    MAC_Pool定义重复了。如果不是在第一次初始化这个变量的文件中,应该使用extern修饰这个变量