fatal error LNK1169: one or more multiply defined symbols found

编译时显示的错误:

引起该错误的原因:

在stadfx.h中#include <xx.cpp>引发的错误

解决方法:

不要在stadfx.h中#include <xx.cpp>

解决思路过程:

查看报错原因,可发现基本上每条错误都是含有信息“already defined in stdafx.obj”,那就可以考虑一下是不是在stdafx.h或stdafx.cpp上出了问题。

先弄懂stdafx.h:

stdafx.h并不是标准C++头文件,也就是说,该文件本质上相当于自定义的一个头文件。标准应用程序框架头文件。存放一系列头文件、预处理指令、结构体、联合、枚举定义等,便于管理代码。

从内容上来说,头文件stdafx.h是

  1.包含标准头文件 ,就是这个头文件包含标准C的头文件,例如:stdio.h、string.h这些,这种做法实际在我们项目中很常见,把大部分.c文件需要的头文件,放在一个头文件中,这样只有include这一个头文件就行,省事

  2.包含项目中的不会轻易改动的头文件

       3. .h文件不直接参与源码编译,.cpp参与源码编译;因为.h文件不参与源码编译,所以在.h文件中不要写带内存的代码

stadfx.h的注意点:

#include"stdafx.h" 必须是所有的CPP实现文件第一条语句。因为在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。否则,你将会得到“No such file or directory”这样让你百思不得其解的错误提示。

在生成stdafx.h头文件的同时,也生成了stdafx.cpp源文件,该源文件只包含#include "stdafx.h"语句,这是在编译过程中第一个被编译的文件,编译的结果保存在一个名为stdafx.pch的文件里。 (扩展名pch表示预编译头文件。)当Visual C++编译随后的每个.cpp文件时,它阅读并使用它刚生成的.pch文件。 Visual C++不再分析Windows  include文件,除非用户又编缉了stdafx.cpp或stdafx.h。

综上,该错误是因为不了解stdafx.h,导致在stdafx.h中包含cpp文件。因此在每个#include <stdafx.h>的cpp文件中都会再编译一次stdafx.h中包含的cpp文件,导致重复定义。

以上是我的个人理解,若理解有误,欢迎指正。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值