博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
"fatal error LNK1169: 找到一个或多个多重定义的符号" 解决方案
阅读量:4686 次
发布时间:2019-06-09

本文共 928 字,大约阅读时间需要 3 分钟。

本人在测试刚刚安装的vs2017时运行出了问题, 错误信息为 "fatal error LNK1169: 找到一个或多个多重定义的符号", 代码如下: 

//Myfile.h#include
#include
#include
int fac(int n){ int t = 1; for (int i = 1; i <= n; i++) { t *= i; } return t;}float max(float x1, float x2){ return (x1 > x2 ? x1 : x2);}void menu(){ printf("hello world\n");}//test.cpp#include "Myfile.h"using namespace std;int main(){ cout << fac(5) << endl; cout << max(3, 9) << endl; menu(); return 0;}

仔细思考了下报错原因, 在头文件包含到test.cpp时,  而实际上Myfile.h中包含了构造函数的实现,于是test.cpp生成目标文件的时候,包含了构造函数的实现。而test.cpp也包含了test.h,同样编译生成目标文件的时候,也会包含构造函数的实现。这样二者在链接阶段就会发现有两个一模一样的函数,出现了重定义的问题. 解决方法如下:

将函数的声明放在头文件Myfile.h里, 函数的定义则放在test.cpp中, 这样运行后没有报错. 另外, 由于是重定义发生了错误, 所以如果我们用内联函数, 这样在执行时是嵌入代码块, 这样也就不会再出现函数的重定义的问题.

同样的, 除了函数的定义不能在头文件里实现, 变量的定义以及类的方法的定义同样不能放在头文件里, 这样出现重定义报错的情况.

转载于:https://www.cnblogs.com/Aurora-Borealis/p/11157805.html

你可能感兴趣的文章
端口扫描base
查看>>
iOS IM开发的一些开源、框架和教程等资料
查看>>
FansUnion:共同写博客计划终究还是“流产”了
查看>>
python 二维字典
查看>>
编译原理实验一
查看>>
Git for Android Studio 学习笔记
查看>>
pip 警告!The default format will switch to columns in the future
查看>>
Arrays类学习笔记
查看>>
实验吧之【天下武功唯快不破】
查看>>
2019-3-25多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)...
查看>>
win7-64 mysql的安装
查看>>
dcm4chee 修改默认(0002,0013) ImplementationVersionName
查看>>
maven3在eclipse3.4.2中创建java web项目
查看>>
发布时间 sql语句
查看>>
黑马程序员 ExecuteReader执行查询
查看>>
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
第二冲刺阶段个人博客5
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>