在我的控制台应用程序中,我正在使用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;
答案 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)
检查以下链接是否存在未解析的外部符号的各种原因