您的位置:首页 > 其它

“error LNK1169: 找到一个或多个多重定义的符号”的解决方法

2017-02-10 11:36 666 查看
公司计划今年让我去搞嵌入式相关的东西,清单已经列下去采购了,东西没到的这几天闲来无事,心血来潮,本着每天不创造价值就要学到东西的原则想自己为公司编写一些内部的库函数。首先就是把去年的一些代码整合下。原则上肯定是遵循“高内聚低耦合”的原则。实际操作来出了一点小情况。废话不多说,下边举例子:

有三个文件,分别为a.h、a.cpp、b.cpp。

a.h和a.cpp的关系不多说,一看就明了,b.cpp也引用了a.h头文件,编译时通过,链接时出现“error LNK1169: 找到一个或多个多重定义的符号”的错误。也就是说单个文件是没有语法错误的,链接时出了问题。我在a.h中也加入了#ifndef..#define..#endif的头文件卫士,但是也是不行,查了下资料找到了原因。a.h中的变量在a.cpp和b.cpp中有使用,在编译时是不会出错,但是在链接时就会出现重定义的错误。解决方法就是在a.h声明的变量前加上extern的关键字,在b.cpp中不加extern关键字重新声明一次,就完美通过。

这其实是个很基础的问题,之所以犯这个错是因为单纯地以一个文件包含头文件的方式来看待。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐