visualstudio在链接过程中找不到std:map
visual studio can not find std:map during linkage
在控制台应用程序中,我使用的是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
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 使用一个考虑到std::map中键值的滚动或换行的键
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将重物插入std::map
- 使用通用值初始化 std::map,不重复
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- C++:当所有条目都保证是唯一时,替代 std::map
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- C++如何创建 std::map
- 从其他容器中移动构造"std::map"
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- C++中 std::map 的运行时复杂度是多少?
- 为什么在 std::map 上移动无法将元素从一个映射移动到另一个映射
- 使用重载 [] 运算符返回 std::map() 的可赋值
- std::map, std::unordered_map - 缩小初始值设定项列表中的转换范围
- C++ 使用枚举类对象分配 std::map 值
- 静态 std::map instatiation 在类的方法中调用构造函数吗?
- std::map:当元素不可默认构造时创建/替换元素
- Arduino编译器和STL:使用std::vector和std::map