我试图在一台Ubuntu机器上运行make来编译一个RoT MUD,但我得到的最多的是一个collect2: error: ld returned 1 exit status。
这是在终端出现错误之前出现的错误(以及许多其他类似的错误):
/usr/bin/ld: obj/wizlist.o:/home/lucas/Projects/R2b5/src/merc.h:3355: multiple definition of `bllmax'; obj/act_comm.o:/home/lucas/Projects/R2b5/src/merc.h:3355: first defined here据我所知,这意味着头文件中有变量声明,并且使用static是一个简单的修复方法,但是,我还不能确定应该将该关键字放在代码中的什么位置来解决这个问题。以下是在meum.h中唯一提到bllmax的内容:
int bllmax, crbmax, crnmax, srpmax, mngmax;Here是我正在尝试编译的程序。
发布于 2021-07-18 00:00:14
您需要了解声明和定义之间的区别。声明告诉编译器符号存在于某处,但可能不在此处。定义就是告诉编译器符号存在于此。
您显示的行(没有任何上下文)定义变量,这意味着它们将在包括头文件的每个源文件中定义。
它应该做的是声明变量,这可以通过将它们设为extern来完成
extern int bllmax, crbmax, crnmax, srpmax, mngmax;然后在单个源文件中定义变量(没有extern)。
https://stackoverflow.com/questions/68422077
复制相似问题