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)
有任何提示吗?谢谢
I have a h- and a cpp-file with some calculations used in many of my projects.
Now I tried to put them in a separate dll, so the files should not be included in every project.
When linking I get a LNK2001 (unresolved symbol) error for a struct, however lib and dll are in the right place.
I use the
#ifdef TOOLS_EXPORTS
#define TOOLS_API __declspec(dllexport)
#else
#define TOOLS_API __declspec(dllimport)
#endif
macro, which works fine for a couple of methods.
The struct is defined like that
TOOLS_API typedef struct {
char Name[128];
} uTSystem;
And in the files using this struct from the dll its also defined correctly(?)
extern uTSystem ABC;
The error message is:
error LNK2001: Nichtaufgeloestes externes Symbol "struct uTSystem ABC" (?ABC@@3UuTSystem@@A)
Any hints? Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设您在编译 DLL 时定义了 TOOLS_EXPORT,您将导出变量
ABC
。在您的代码中,您将其定义为extern uTSystem ABC;
这对于与使用 DLL 共享的头文件来说没问题。虽然 extern 声明有一个变量 ABC,但您必须在您的 .cpp 文件之一中定义它:
前面不带
extern
。您的文件可能如下所示:----tools.h ----
----tools.cpp ----
Assuming you defined TOOLS_EXPORT when compile the DLL you will export the variable
ABC
. In your code you define it asextern uTSystem ABC;
That's ok for the header file, that you share with the consuming DLL.While the extern declares that there is a variable ABC you must define it in one of your .cpp file:
without the
extern
in front. Your file might look like this:---- tools.h ----
---- tools.cpp ----