问题描述如下:

有 三个源文件,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: 找到一个或多个多重定义的符号”的解决方法相关推荐

  1. 【转载】“error LNK1169: 找到一个或多个多重定义的符号”的解决方法

    c++的小细节的地方 原文地址:https://blog.csdn.net/xiaosu123/article/details/5665729 问题描述如下: 有 三个源文件,A.h.B.cpp.C. ...

  2. fatal error LNK1169: 找到一个或多个多重定义的符号的 解决办法

    项目 –> 属性 –> 链接器 –> 命令行 –> 附加选项中 加 /force 虽然会有好多warning,但是能运行,没有大碍.

  3. fatal error LNK1169: 找到一个或多个多重定义的符号 的解决方案

    昨天,尝试一个项目,遇到了如下的问题.先来还原一下: 头文件test.h #pragma once #include <Eigen/Core> #include <iostream& ...

  4. fatal error LNK1169: 找到一个或多个多重定义的符号

    fatal error LNK1169: 找到一个或多个多重定义的符号 "fatal error LNK1169: 找到一个或多个多重定义的符号"解决方法_u014552288的专 ...

  5. 【编译器问题】“fatal error LNK1169: 找到一个或多个多重定义的符号“ 解决方案

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

  6. C++报错:fatal error LNK1169: 找到一个或多个多重定义的符号

    一.概述   使用visual studio编写C++代码时,为了书写规范与标准,往往需要创建多个源文件与头文件(并且源文件中需要包含相关头文件),这不仅能锻炼你的模块化思维,还能及时定位是哪一个模块 ...

  7. error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法

    error LNK2005: "找到一个或多个多重定义的符号" 已经在 xxxx.obj 中定义 的解决方法 参考文章: (1)error LNK2005: "找到一个或 ...

  8. LNK1169 找到一个或多个多重定义的符号

    LNK1169    找到一个或多个多重定义的符号 就是函数名重复了.

  9. LNK2005 _main 已经在 test0208.obj 中定义 / LNK1169 找到一个或多个多重定义的符号

    ** 错误 LNK2005 _main 已经在 test0208.obj 中定义 错误 LNK1169 找到一个或多个多重定义的符号 当我们遇到这个问题的时候先不要慌张,如果是英文报错先把翻译成中文, ...

最新文章

  1. Redis (二)_ jedis的使用
  2. Ubuntu死机解决方法汇总
  3. 科普云计算知识,迎接云计算大会
  4. 【Mysql 学习路线图】
  5. 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 2 )
  6. 虚拟机及VmBasic编译引擎实现
  7. CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!
  8. 125. Valid Palindrome
  9. sde oracle11g,Arcsde post oracle11g报错解决办法
  10. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨2.62%
  11. 计蒜客——双重回文数
  12. 两波形相位差的计算值_波形相位频率可调DDS信号发生器(设计分享)
  13. restController
  14. How to monitor mongodb replica set using prometheu
  15. openmp 并行 速度更慢_OpenMP和C并行for循环:为什么我的代码在使用OpenMP时会变慢?...
  16. CSS 盒子模型 第三节
  17. Android开发中的图片压缩
  18. 如何编写爬虫获取淘宝网上所有的商品分类以及关键属性 销售属性 非关键属性数据
  19. CDC *pDC=GetDC();具体是什么意思?
  20. EXCEL横向表格如何调整为纵向表格?

热门文章

  1. java整数的反转_反转Java中的整数
  2. 《iOS 全埋点技术白皮书》重磅推出
  3. 听说蒂姆·库克来了?这和我们有什么关系!
  4. [CODE FESTIVAL 2016]Distance Pairs
  5. zabbix NFS挂载 监控模板
  6. bzoj1833: [ZJOI2010]count 数字计数 codevs1359 数字计数
  7. phpStorm如何用FTP,SSH连接到虚拟机linux系统?
  8. 类与类之间调用Computer-CPU-Mouse--看懂它看懂类之间的调用
  9. we need to have frequent contact for relationships for transferring from aca to career
  10. 如何备份桌面文件呢?