解决源自.lib文件的“本地定义的符号”和“未解析的外部符号”

时间:2011-01-21 10:56:33

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

我正在尝试使用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)

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

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

我忘记了什么吗?我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

在互联网上找到这个:用。创建gdcm DLL时问题就消失了 BUILD_SHARED_LIBS ON。

这会响铃吗?

请参阅:http://www.creatis.insa-lyon.fr/pipermail/dcmlib/2007-April.txt

答案 1 :(得分:-2)

那个basic_string需要#include <string>,你试过吗?