我在头文件global.h
中定义了一个结构,我尝试在另一个类中使用它,但是我收到了这个错误:Error 6 error LNK2001: unresolved external symbol "struct tag_KG_Data g_GlobalVar" (?g_GlobalVar@@3Utag_KG_Data@@A) KGComThread.obj
#ifndef GLOBAL_H_
#define GLOBAL_H_
#include <stdio.h>
typedef struct tag_KG_Data
{
int nKGStationID;
int nKGComPort;
}GLOBAL_VAR;
#endif
并在KGComThread.cpp
文件中我使用它:
#include "global.h"
extern GLOBAL_VAR g_GlobalVar;
我认为编译器无法找到global.h
文件,因此它定义了一个无意义的tag_KG_Data
结构,但我无法理解为什么。
答案 0 :(得分:4)
此
extern GLOBAL_VAR g_GlobalVar;
只是声明。该变量尚未定义:
GLOBAL_VAR g_GlobalVar;
您需要在单个实施文件中使用上一行。
此外,由于这是C ++,您不需要结构的标记,您只需编写
即可struct GLOBAL_VAR
{
int nKGStationID;
int nKGComPort;
};