LNK2005错误与向量

时间:2012-07-25 20:58:03

标签: c++ visual-studio-2008 lnk

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

  • 重建,检查
  • 检查运行时库,只有一个项目
  • 检查入口点,检查SUBSYSTEM:CONSULE
  • 检查强制包含.lib文件,我没看到#pragma comment(lib,...)
  • 关于在链接器选项中打开/ VERBOSE的事情,我没有看到选项

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

  • LNK2005:“class std :: vector,class std :: allocator>,class std :: allocator,class std :: allocator>>>,class std :: allocator,class std :: allocator&gt ;,类std :: allocator,类std :: allocator>>>>> list1“(?list1 @@ 3V?$ vector @ V?$ vector @ V?$ basic_string @ DU?$ char_traits @ d @性病@@ V'$ @分配器@ d @@ 2性病@@ V'$ @分配器V'$ @的basic_string杜?$ @ char_traits @ d @@性病V'$ @分配器@ d @@ 2 @性病@@ 2 @@ STD @@ V'$分配器@ V'$ @矢量V'$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ V'$分配器@V?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@@ 2 @@ std @@@ 2 @@ std @@ A)已在msproject中定义。 OBJ
  • LNK2005:“class std :: vector,class std :: allocator>,class std :: allocator,class std :: allocator>>>,class std :: allocator,class std :: allocator&gt ;,类std :: allocator,类std :: allocator>>>>> list1“(?list1 @@ 3V?$ vector @ V?$ vector @ V?$ basic_string @ DU?$ char_traits @ d @性病@@ V'$ @分配器@ d @@ 2性病@@ V'$ @分配器V'$ @的basic_string杜?$ @ char_traits @ d @@性病V'$ @分配器@ d @@ 2 @性病@@ 2 @@ STD @@ V'$分配器@ V'$ @矢量V'$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ V'$分配器@V?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@@ 2 @@ std @@@ 2 @@ std @@ A)已在msproject中定义。 OBJ

我看到它是关于已在msproject中定义的向量的东西 - 我确保向量具有不同的名称。这是标头# include <vector>;我试着评论一些#includes来检查,但同样。

2 个答案:

答案 0 :(得分:2)

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

你有

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

在头文件中?该标题是否包含在多个翻译单元中?

如果您想要全局,则需要在标题中使用extern

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

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

答案 1 :(得分:1)

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

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

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

您的知识差距在于您不了解/了解如何在具有多个源文件的程序中声明和定义全局变量。任何体面的C ++入门书都应该涵盖这一点。