【问题标题】:Solving "locally defined symbol" and "unresolved external symbol" that originates from the .lib files解决源自 .lib 文件的“本地定义的符号”和“未解析的外部符号”
【发布时间】:2011-06-13 01:53:34
【问题描述】:

我正在尝试在 Windows 7 64 位的 Visual C++ 2010 上使用开源库 GDCM 编译我的项目。我在我的项目中包含了所需的 .lib 文件(gdcmDSED.lib 和 gdcmMSFF.lib),但是,编译器抱怨超过 100 个未解决的外部错误。但我在错误中看到了一些模式。这里:

1>gdcmDSED.lib(gdcmSequenceOfItems.obj) : warning LNK4049: locally defined symbol ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ (public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)) imported
...
...
1>gdcmMSFF.lib(gdcmCurve.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z)
1>gdcmDSED.lib(gdcmCSAHeader.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z)

这些是总共 100 个中的 1 个警告和 2 个错误。这是为了更好地说明。 我可以看到编译器抱怨所有这些警告和错误,无论是关于“本地定义的符号”和“未解析的外部符号”。此外,错误似乎源于 .lib 文件本身(不是来自 [我的项目名称].obj),如上所示。

我已尝试包含库中的所有 .lib 文件,但这似乎无法解决问题。更糟糕的是,编译器会输出更多相同的警告和错误。

我在这里忘记了什么吗?我必须怎么做才能解决这个问题?

【问题讨论】:

  • 您是否将您的 lib 文件包含为依赖 lib 文件?仅提供 lib 文件的位置是不够的。您必须在项目设置中包含依赖项。
  • 如果你的意思是,将库的名称放入链接器中,那么我已经这样做了。

标签: c++ visual-studio-2010 linker warnings linker-errors


【解决方案1】:

在互联网上找到这个:使用 BUILD_SHARED_LIBS ON。

这会响铃吗?

见:http://www.creatis.insa-lyon.fr/pipermail/dcmlib/2007-April.txt

【讨论】:

  • 链接已失效;需要更好的参考。
  • @Thelema:那些事情发生了(已经 7 年了)。这就是为什么文章的本质在我的答案的第一行,这似乎解决了 OPs 问题。很抱歉不再在这方面花费(宝贵的)时间。
【解决方案2】:

那个basic_string需要#include &lt;string&gt;,你试过吗?

【讨论】:

  • 把它放进去根本没有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 2011-02-09
  • 1970-01-01
  • 2015-06-27
相关资源
最近更新 更多