“error LNK1169: 找到一个或多个多重定义的符号”的解决方法
问题描述如下:
有 三个源文件,A.h、B.cpp、C.cpp。
A.h是头文件,其中声明了三个变量a1、a2、 a3。
B.cpp是A.h中所声明的类的实现源代码,C.cpp是主程序文件。B.cpp和C.cpp中均包含头文件 A.h。
在编译时,编译能够通过,但链接时出了问题,出现”error LNK1169: 找到一个或多个多重定义的符号“的错误。
经过分析,确定了这是由于两个实现文件中重复包含了头文件而造成的。可解决方法却始终找不到。
要 注意的是,在这里,在头文件中加入#ifndef……#endif这样的预编译命令是没用的,因为这是防止嵌套包含头文件的,而本例中并没有嵌套包含,是 在两个文件中分别包含。
因为这三个变量在两个实现文件中都要用到,所以一定要包含在A.h中。后来在网上找到了解决方法,其实很简单。
就是在A.h中的三个变量声明前加上extern 关键字,然后在B.cpp中不加extern关键字再次声明这三个变量。于是编译链接顺利通过。
其实这是C++中比较基础的问题。
还有种情况是定义了函数,但在另个文件中准备用#include打开,但是结果还是会出现。
直接包含不就在两个cpp文件中都定义了相同的函数/变量吗,链接时会出现重复定义(你自己试试),所以需要使用extren申明一下即可,他们使用的是同一个实体。
例如:
1、你在a.cpp中定义了一个函数
void func()
{
}
希望在b.cpp中调用,调用前就需要进行声明,格式如下:
extren void func(); //extren 后面根的形式和函数定义形式要完全相同
void mian()
{
func();
}
2、1、你在a.cpp中定义了一个变量 int a;
希望在b.cpp中使用,使用前就需要进行声明,格式如下:
extren int a; //extren 后面根的形式和变量定义形式要完全相同
void main()
{
int b = a;
}
“error LNK1169: 找到一个或多个多重定义的符号”的解决方法相关推荐
- 【转载】“error LNK1169: 找到一个或多个多重定义的符号”的解决方法
c++的小细节的地方 原文地址:https://blog.csdn.net/xiaosu123/article/details/5665729 问题描述如下: 有 三个源文件,A.h.B.cpp.C. ...
- fatal error LNK1169: 找到一个或多个多重定义的符号的 解决办法
项目 –> 属性 –> 链接器 –> 命令行 –> 附加选项中 加 /force 虽然会有好多warning,但是能运行,没有大碍.
- fatal error LNK1169: 找到一个或多个多重定义的符号 的解决方案
昨天,尝试一个项目,遇到了如下的问题.先来还原一下: 头文件test.h #pragma once #include <Eigen/Core> #include <iostream& ...
- fatal error LNK1169: 找到一个或多个多重定义的符号
fatal error LNK1169: 找到一个或多个多重定义的符号 "fatal error LNK1169: 找到一个或多个多重定义的符号"解决方法_u014552288的专 ...
- 【编译器问题】“fatal error LNK1169: 找到一个或多个多重定义的符号“ 解决方案
文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...
- C++报错:fatal error LNK1169: 找到一个或多个多重定义的符号
一.概述 使用visual studio编写C++代码时,为了书写规范与标准,往往需要创建多个源文件与头文件(并且源文件中需要包含相关头文件),这不仅能锻炼你的模块化思维,还能及时定位是哪一个模块 ...
- error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法
error LNK2005: "找到一个或多个多重定义的符号" 已经在 xxxx.obj 中定义 的解决方法 参考文章: (1)error LNK2005: "找到一个或 ...
- LNK1169 找到一个或多个多重定义的符号
LNK1169 找到一个或多个多重定义的符号 就是函数名重复了.
- LNK2005 _main 已经在 test0208.obj 中定义 / LNK1169 找到一个或多个多重定义的符号
** 错误 LNK2005 _main 已经在 test0208.obj 中定义 错误 LNK1169 找到一个或多个多重定义的符号 当我们遇到这个问题的时候先不要慌张,如果是英文报错先把翻译成中文, ...
最新文章
- Redis (二)_ jedis的使用
- Ubuntu死机解决方法汇总
- 科普云计算知识,迎接云计算大会
- 【Mysql 学习路线图】
- 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 2 )
- 虚拟机及VmBasic编译引擎实现
- CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!
- 125. Valid Palindrome
- sde oracle11g,Arcsde post oracle11g报错解决办法
- TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨2.62%
- 计蒜客——双重回文数
- 两波形相位差的计算值_波形相位频率可调DDS信号发生器(设计分享)
- restController
- How to monitor mongodb replica set using prometheu
- openmp 并行 速度更慢_OpenMP和C并行for循环:为什么我的代码在使用OpenMP时会变慢?...
- CSS 盒子模型 第三节
- Android开发中的图片压缩
- 如何编写爬虫获取淘宝网上所有的商品分类以及关键属性 销售属性 非关键属性数据
- CDC *pDC=GetDC();具体是什么意思?
- EXCEL横向表格如何调整为纵向表格?
热门文章
- java整数的反转_反转Java中的整数
- 《iOS 全埋点技术白皮书》重磅推出
- 听说蒂姆·库克来了?这和我们有什么关系!
- [CODE FESTIVAL 2016]Distance Pairs
- zabbix NFS挂载 监控模板
- bzoj1833: [ZJOI2010]count 数字计数 codevs1359 数字计数
- phpStorm如何用FTP,SSH连接到虚拟机linux系统?
- 类与类之间调用Computer-CPU-Mouse--看懂它看懂类之间的调用
- we need to have frequent contact for relationships for transferring from aca to career
- 如何备份桌面文件呢?