visual studio在链接期间找不到std:map

时间:2013-12-11 13:17:59

标签: c++ visual-studio-2012 stl

在我的控制台应用程序中,我正在使用stl map。当我使用visual studio 2012进行编译时,我收到的错误是在编译期间找不到地图。

 Error  1   error LNK2001: unresolved external symbol "private: static class std::map<int,int,struct std::less<int>,class std::allocator<struct std::pair<int const ,int> > > m_headerDataMap" (?m_headerDataMap@FileHeader@@0V?$map@HHU?$less@H@std@@V?$allocator@U?$pair@$$CBHH@std@@@2@@std@@A)  c:\Users\m\documents\visual studio 2012\Projects\FileReader\FileReader\FileReader.obj   FileReader

我应该为项目添加库吗?如果是,哪一个以及如何。

我将地图定义如下:

 static map<int, int> m_headerDataMap;

3 个答案:

答案 0 :(得分:7)

如果你有像

这样的代码
class MyClass
{
public:
    //...
private:
    static std::map<int, int> data;
};

int main()
{
    MyClass m;
}

您最终会遇到类似的链接器错误:

  

错误LNK2001:未解析的外部符号“private:static class   std :: map,class std :: allocator&gt; &GT; MyClass :: data“......

您需要在某处定义它。 例如在cpp中的文件

std::map<int, int> MyClass::data;

参见上一个问题here

答案 1 :(得分:2)

您通常不需要为VS项目添加任何额外内容以包含C ++标准库。检查项目属性中链接器“input”选项中是否有任何不适当的设置。 (那里有几个'忽略'选项。)

您没有提及任何编译问题,但也请确保您没有忽略编译器尖叫警告您有关此调用的早期问题。

答案 2 :(得分:-1)

检查以下链接是否存在未解析的外部符号的各种原因

http://msdn.microsoft.com/en-us/library/799kze2z.aspx