2010-10-21 64 views
1

我有一个h-和一个cpp文件,在我的许多项目中使用了一些计算。LNK 2001结构错误

现在我试图把它们放在一个单独的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" ([email protected]@[email protected]@A) 

任何提示?谢谢

+0

你得到的链接DLL或消费应用程序时LINK2001?包含确切的错误信息也可能有所帮助。 – harper 2010-10-21 08:24:54

+0

我得到的错误,当链接dll – Simon 2010-10-21 08:32:38

+0

错误消息是:错误LNK2001:Nichtaufgeloestes externes符号“结构uTSystem ABC”(?ABC @@ 3UuTSystem @@ A) – Simon 2010-10-21 09:16:18

回答

1

假设你在编译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;