(.text+0x): multiple definition of 问题及解决

本文介绍了解决QT工程中因重复编译同一.cpp文件导致的链接错误的方法。通过对x.pro文件进行检查和调整,成功消除了编译过程中出现的多个定义错误。

QT工程x.pro,

qmake  x.pro生成Makefile,

make

最后生成目标文件时,连接出错:

“(.text+0x0): multiple definition of ”的错误,查找,有原因是因为#include ".cpp/.c",检查代码,不是此问题。

用nm   编译的文件.o,未现出多个相同的方法名。

检查Makefile,发现2处理相同的   .o编译配置,相同的cpp编译成相同的.o。

检查x.pro,发现2处理相同的   .cpp文件。

修改x.pro,删除其中一处理,

qmke

make

编译通过。

后继,对比两次生成的.o,大小相同, nm两次生成的.o,输出的信息相同(不知道编译器如何区别出来 ,TODO: )



gcc main.o ListManage.o -o list ListManage.o: In function `screen': ListManage.c:(.text+0x0): multiple definition of `screen' main.o:main.c:(.text+0x0): first defined here ListManage.o: In function `creatNode': ListManage.c:(.text+0x5b): multiple definition of `creatNode' main.o:main.c:(.text+0x5b): first defined here ListManage.o: In function `listPrint': ListManage.c:(.text+0xd1): multiple definition of `listPrint' main.o:main.c:(.text+0xd8): first defined here ListManage.o: In function `listPushBack': ListManage.c:(.text+0x198): multiple definition of `listPushBack' main.o:main.c:(.text+0x156): first defined here ListManage.o: In function `listDelete': ListManage.c:(.text+0x22f): multiple definition of `listDelete' main.o:main.c:(.text+0x1e4): first defined here ListManage.o: In function `listNameFind': ListManage.c:(.text+0x2f8): multiple definition of `listNameFind' main.o:main.c:(.text+0x2ad): first defined here ListManage.o: In function `listIDFind': ListManage.c:(.text+0x349): multiple definition of `listIDFind' main.o:main.c:(.text+0x2fe): first defined here ListManage.o: In function `listDestory': ListManage.c:(.text+0x38d): multiple definition of `listDestory' main.o:main.c:(.text+0x342): first defined here ListManage.o: In function `userInput': ListManage.c:(.text+0x3e4): multiple definition of `userInput' main.o:main.c:(.text+0x399): first defined here collect2: error: ld returned 1 exit status makefile:10: recipe for target 'list' failed make: *** [list] Error 1
最新发布
08-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值