visualstudio在链接过程中找不到std:map

visual studio can not find std:map during linkage

本文关键字:std map 找不到 过程中 链接 visualstudio      更新时间:2023-10-16

在控制台应用程序中,我使用的是stl映射。当我用visualstudio2012编译它时,我得到了一个错误,即在编译过程中找不到地图。

 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:Usersmdocumentsvisual studio 2012ProjectsFileReaderFileReaderFileReader.obj   FileReader

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

我将地图定义如下:

 static map<int, int> m_headerDataMap;

如果您有类似的代码

class MyClass
{
public:
    //...
private:
    static std::map<int, int> data;
};
int main()
{
    MyClass m;
}

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

错误LNK2001:未解析的外部符号"private:静态类std::map,类std::分配器>>MyClass::data"…

你需要在某个地方定义它。例如,在cpp中,文件

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

请参阅此处的上一个问题

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

您没有提到任何编译问题,但也要确保您没有忽视编译器对您发出的关于此调用早期问题的警告。

检查以下链接以查找未解决的外部符号的各种原因

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