【发布时间】:2009-06-14 00:14:27
【问题描述】:
我的 VC++ 解决方案包括两个项目,一个应用程序 (exe) 和一个静态库。
两者都编译正常,但无法链接。我使用的静态库中的每个函数都收到“未解析的外部符号”错误。它们看起来像这样:
MyApplication.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl MyStaticLibrary::accept(int,struct sockaddr *,int *)"
应用程序找到的 .lib 很好,所以这不是问题。我在想“dllimport”是问题所在——为什么当我试图构建一个静态库时它会在那里?应用程序和库都使用“多线程 (/MT)”运行时库,而不是“多线程 DLL (/MD)”。
编辑:
我认为有些答案是正确的。该库称为 UDT,在主头文件中有这个:
#ifdef UDT_EXPORTS
#define UDT_API __declspec(dllexport)
#else
#define UDT_API __declspec(dllimport)
#endif
这是否意味着它不打算用作静态库?
【问题讨论】:
-
所以神秘的是 __declspec(dllimport) 来自哪里——大概是库的 .h 文件,但它是如何到达那里的?一些宏变得疯狂?你好吗.h...?
标签: c++ visual-studio visual-c++