【发布时间】:2012-09-09 11:34:37
【问题描述】:
我有一个头文件global.h,我在其中声明了一些我打算在其他文件中使用的变量。
#ifndef GLOBAL_H_
#define GLOBAL_H_
#include <stdio.h>
typedef struct tag_KG_Data
{
int nKGStationID;
int nKGComPort;
}GLOBAL_VAR;
GLOBAL_VAR g_GlobalVar;
BOOL b_newDataReady;
BOOL b_startedSocketClient;
#endif
起初我只在文件test1.cpp 和extern GLOBAL_VAR g_GlobalVar; 中声明了GLOBAL_VAR g_GlobalVar,并且工作得很好。然后我声明了 2 个BOOLs 并在test2.cpp 中使用它们,但我得到了一个error LNK2005: "struct tag_KG_Data g_GlobalVar" (?g_GlobalVar@@3Utag_KG_Data@@A) already defined in test1.obj,并且对于我拥有的每个全局变量,我都会遇到类似的错误。问题是我不在test2.cpp 中使用GLOBAL_VAR g_GlobalVar 或test1.cpp 中的任何BOOLs。
【问题讨论】:
-
所以你有一些工作,现在你已经改变了它,它不再工作了。那里有一个大线索。
-
@PeteBecker 我同意,但我想了解为什么不起作用,而不仅仅是解决问题。
标签: c++ windows linker global-variables