0

ヘッダーファイル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理由がわかりません。

4

1 に答える 1

4

これ

extern GLOBAL_VAR g_GlobalVar;

単なる宣言です。変数はまだ定義されていません:

GLOBAL_VAR g_GlobalVar;

単一の実装ファイルに前の行が必要です。

また、これはC ++であるため、構造体のタグは必要ありません。次のように記述できます。

struct GLOBAL_VAR
{
      int nKGStationID;
      int nKGComPort;
};
于 2012-09-04T11:40:21.773 に答える