【问题标题】:C++ link error on Visual Studio 2010 x64Visual Studio 2010 x64 上的 C++ 链接错误
【发布时间】:2010-07-23 14:23:00
【问题描述】:

我正在将 C++ 代码库从 VS2005 升级到 VS2010,并且我正在重建一些第三方 C++ 依赖项。我构建这些 32 位没有问题,但在链接 64 位 (x64) 时遇到问题。我正在为许多标准库函数获取未解决的外部。例如:

error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl 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)" (__imp_??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ)

error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl 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> >(char const *)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z) referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl YAML::Exp::Escape(class YAML::Stream &,int)" (?Escape@Exp@YAML@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAVStream@2@H@Z)

我尝试将 msvcprtd.lib 显式添加到链接行并启用库解析调试,它似乎正在 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64\msvcprtd.lib 中搜索符号但没有找到它们。

有人知道为什么会这样吗?

【问题讨论】:

    标签: c++ windows linker 64-bit visual-c++-2010


    【解决方案1】:

    您可以尝试启用 /showIncludes 以查看引入了哪些头文件。因为通常我希望将这些函数内联到生成的二进制文件中。

    【讨论】:

    • 看起来这就是问题所在。似乎包括正在使用的旧 VS。我最终找到了问题所在。 D&S\Application Data\MSBuild 中有指向旧 VS 包含目录的属性表。
    最近更新 更多