LNK2005矢量错误



这个博客Cubic建议尝试四件事,然后或多或少地寻求的帮助

  • 重建,检查
  • 选中"运行库",只有一个项目
  • 检查入口点,检查子系统:CONSULE
  • 检查强制包含的.lib文件,我看不到#pragma注释(lib,…)
  • 关于在链接器选项中打开/VERBOSE,我看不到该选项

我会发布一些代码,但这是一个LNK错误;它没有提供太多信息。

  • LNK2005:"类std::vector,类std:::分配器>,类std::分配器,类std::分配器>>,类std::分配器,类std::分配器>list1"(?list1@@3V$vector@V$vector@V$basic_string@DU$char_traits@D@std@@V$allocator@D@2@@std@@V$allocator@V$basic_string@DU$char_traits@D@std@@V$allocator@D@2@@std@@@2@@std@@V$allocator@V$vector@V$basic_string@DU$char_traits@D@std@@V$allocator@D@2@@std@@V$allocator@V$basic_string@DU$char_traits@D@std@@V$allocator@D@2@@std@@@2@@std@@2@@std@@A)已在msproject.obj中定义
  • LNK2005:"类std::vector,类std:::分配器>,类std::分配器,类std::分配器>>,类std::分配器,类std::分配器>list1"(?list1@@3V$vector@V$vector@V$basic_string@DU$char_traits@D@std@@V$allocator@D@2@@std@@V$allocator@V$basic_string@DU$char_traits@D@std@@V$allocator@D@2@@std@@@2@@std@@V$allocator@V$vector@V$basic_string@DU$char_traits@D@std@@V$allocator@D@2@@std@@V$allocator@V$basic_string@DU$char_traits@D@std@@V$allocator@D@2@@std@@@2@@std@@2@@std@@A)已在msproject.obj中定义

我看到它是关于msproject中已经定义的向量的东西——我确保向量有不同的名称。这是标题为# include <vector>的东西吗;我试着把一些#includes注释掉,但还是一样。

您似乎不止一次定义list1。(顺便说一句,这个名字表明它应该是std::list,但这超出了问题的范围)

你有吗

std::vector<std::string> list1;

在头文件中?这个标题包含在多个翻译单元中吗?

如果你想要一个全局,你需要在标题中使用extern

extern std::vector<std::string> list1;

并在单个实现文件中移动定义。

您已经多次定义list1。可能是将它放在一个头文件中,然后将其包含在多个cpp文件中。这就是你应该怎么做

// in header file
extern std:vector<whatever> list1;
// in one cpp file
std:vector<whatever> list1;

你的知识差距在于,你不知道/不理解如何在拥有多个源文件的程序中声明和定义全局变量。任何一本像样的C++入门书都应该涵盖这一点。

相关内容

  • 没有找到相关文章

最新更新