C ++链接错误LNK2005

时间:2011-06-19 01:12:33

标签: c++

我是C ++编程新手,我正在尝试创建一个模拟Conway生活游戏的程序。我差不多完成了,但是当我让每个函数都拥有它自己的文件时,我继续发现这个链接器错误。

1>algorithm_change.obj : error LNK2005: "unsigned short height" (?height@@3GA) already defined in algorithm.obj

我的代码位于https://github.com/rupertsteel/Life/tree/master/Life

2 个答案:

答案 0 :(得分:3)

如果不查看代码,您在任何标头文件中都有全局unsigned short height;吗?如果是,请将其替换为extern unsigned short height;,并将unsigned short height;放入包含特定标头的源文件中。

答案 1 :(得分:1)

一些评论:

1)life.h中的array_length需要被激活

2)所有外部变量(宽度,高度,刻度,count_array,change_array,error_check,algorithm_length,array_length)都需要在某处定义。

在您的代码中,您基本上告诉编译器这些变量存在于某处但实际上并没有将它们存在于任何地方。在全局范围内的一个.cpp文件中,您需要输入:

unsigned short int width;
unsigned short int height;
unsigned long int ticks;
unsigned short int count_array[10923][10923];
bool change_array[10923][10923];
int error_check;
unsigned long int algorithm_length;
unsigned long int array_length;

除了没有extern关键字之外,它与life.h中的内容完全相同。这实际上会创建变量,而不是现在没有具体实现的变量。

如果您进行更改,我建议您的代码将编译(使用gcc测试)。话虽这么说,你看到的实际错误没有意义。