结构的LNK 2001错误

我有一个h-和一个cpp文件,在我的许多项目中使用了一些计算。 现在我尝试将它们放在一个单独的dll中,因此文件不应包含在每个项目中。 链接时,我得到一个结构的LNK2001(未解析的符号)错误,但是lib和dll是在正确的位置。 我用
#ifdef TOOLS_EXPORTS
#define TOOLS_API __declspec(dllexport)
#else
#define TOOLS_API __declspec(dllimport)
#endif
宏,适用于几种方法。 结构就是这样定义的
TOOLS_API typedef  struct  {
char Name[128];
}  uTSystem;
在使用dll的结构文件中,它也正确定义了(?)
extern uTSystem ABC;
错误消息是:
error LNK2001: Nichtaufgeloestes externes Symbol "struct uTSystem ABC" (?ABC@@3UuTSystem@@A)
任何提示?谢谢     
已邀请:
假设您在编译DLL时定义了TOOLS_EXPORT,您将导出变量
ABC
。在您的代码中,您将其定义为
extern uTSystem ABC;
这对于与消费DLL共享的头文件是可以的。 虽然extern声明存在变量ABC,但您必须在其中一个.cpp文件中定义它:
uTSystem ABC;
前面没有
extern
。您的文件可能如下所示: ---- tools.h ----
#ifdef TOOLS_EXPORTS
#define TOOLS_API __declspec(dllexport)
#else
#define TOOLS_API __declspec(dllimport)
#endif

TOOLS_API typedef  struct  {
char Name[128];
}  uTSystem;

extern uTSystem ABC;
---- tools.cpp ----
#include tools.h

uTSystem ABC;
    

要回复问题请先登录注册