【发布时间】: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