首页 > 代码库 > 【error LNK2005: "struct HWND__ * ui_hwnd" (?ui_hwnd@@3PAUHWND__@@A) 已经在 Susake.obj 中定义】

【error LNK2005: "struct HWND__ * ui_hwnd" (?ui_hwnd@@3PAUHWND__@@A) 已经在 Susake.obj 中定义】

产生原因:多文件包含时,全局变量未用extern

解决方法:直接在全局变量前加上extern即可,若要在在其他文件中使用,该变量声明下就ok了~~

另外引出一个话题,你是不是也发现了这么一个现象??

比如

A.h

A.cpp

#include "A.h"
#include "B.h"

HWND ui_hwnd, hwnd;

int main(int argc, char *argv[])
{
     ui_hwnd = hwnd;
     return 0;   
}    

B.h

B.cpp

#include "B.h"

ui_hwnd = NULL;

为什么在B.cpp中却不需要声明ui_hwnd呢???
我个人猜测是B.h能识别B.cpp,而不能识别A.cpp(虽然都包含了B.h)~~~

转载请注明出处:http://www.cnblogs.com/Susake/p/3721883.html