注册 登录
编程论坛 C++教室

duplicate error

weiwang1234 发布于 2012-10-10 21:37, 551 次点击
ld: duplicate symbol _process in A.o and B.o for architecture x86_64
collect2: ld returned 1 exit status

写了一个header,已经使用了#ifndef 格式,其中定义了一个变量,在A.cpp和B.cpp中都添加了该头文件,想在A.cpp中对该变量进行赋值,B.cpp中进行调用。
但是仍然产生重复定义的error.
求救
2 回复
#2
lz10919149992012-10-10 23:07
在同一编译单元里,外部链接的变量定义只能有一份,两个cpp文件都包含这个头文件的话,就会出现2个定义,当然链接器会报错。
解决办法是在一个cpp里用:
extern type variable;
在另一个cpp里定义这个变量:
type variable;
只要这两个文件在同一编译单元里编译,就引用的是这个变量。

头文件里也可以包含这个外部变量的声明,然后在一个cpp文件里定义它即可。

[ 本帖最后由 lz1091914999 于 2012-10-10 23:12 编辑 ]
#3
pangding2012-10-11 12:53
请楼主参考二楼的回答
1