总结了解决multiple definition of的方法:

问题原因:
    当多个文件包含同一个头文件时,并且你的.H里面没有加上条件编译
#ifndef TEST_H
#define TEST_H
#endif
就会独立的解释,然后生成每个文件生成独立的标示符。在编译器连接时,就会将工程中所有的符号整合在一起,由于,文件中有重名变量,于是就出现了重复定义的错误。

方法1:
    给每一个头文件加上条件编译,避免该文件被多次引用时被多次解释,这是个应该是习惯。这个方法会解决大部分低级问题。

方法2:
    当方法1无效时,可以把所有的全局变量放入一个头文件 global.h (名字随意起,但要加条件编译)中,每一个变量前面加extern,声明一下这些变量将在其它文件中定义。 然后建立一个和头文件名字对应的.c or .cpp文件 如global.c。在里面声明所有的全局变量。例如:void(*Handl_Display)();
然后,让涉及到全局变量的文件include ”global.h“。这样编译时,会先对global.c编译生成一个global.o ,然后再和其它文件的.o链接生成可执行文件。

方法3:
    懒人方法,在所有的全局变量前加上static ,声明成静止变量。也能解决问题。
     所有的方法都是网来的,O(∩_∩)O哈哈~
     谢谢所有的提供方法的哥们~

转载于:https://www.cnblogs.com/hahawgp/archive/2013/03/13/2957704.html

【转】解决多文件编译中连接错误 multiple definition of*****相关推荐

  1. Qt编译过程中报错误“multiple definition of ‘‘”

    工程中碰到,编译Qt工程时,出现,如题的错误,在main函数中的变量或者函数都重现重复定义的错误. 原因:在pro中source中 重复包含了 main.cc这个文件.

  2. 解决MySQL出现不允许连接错误,出现有如,ERROR 1130:Host 'localhost' is not allowed to connect to this MySQL server

    自己电脑MySQL不知道怎么就突然不支持本地登录了,登录中输入 mysql -uroot -p密码 就出现:ERROR 1130 : Host 'localhost' is not allowed t ...

  3. Android 开发环境搭建 与在编译中遇到错误make Error 45解决方法

    Android 开发环境搭建 一.安装ubuntu 10.10操作系统 使用光盘安装,注意分区,分一个swap分区为3G(原则需要与内存一样大,但可以稍微比内存大一点).当时是同事帮我弄的,swap开 ...

  4. webrtc编译中的错误解决

    webrtc编译记录 ·错误1:该错误的意思是python的安装路径要和你此时的webrtc源码的编译路径相同. 解决方法:将python的安装路径和webrtc编译源码的路径放在同一个磁盘下. 错误 ...

  5. 【已解决】ORB_SLAM2 编译 ./build_ros.h错误

    编译 ./build_ros.h 出的错基本就是与这差不多的,方法相同,定位相关的库,然后移动位置,更改cmkelist.txt文件即可 我这里因为ORB_SLAM2用的opencv3,我装的也是op ...

  6. 解决Android Studio编译时INSTALL_FAILED_MISSING_SHARED_LIBRARY错误,提示 unavailable shared library wearable的问题

    1.问题现象 在编译app时安装到虚拟器上时,突然报错: 16:24 Executing tasks: [:app:assembleDebug] in project D:\Android\Proje ...

  7. 变更git url/添加https.sslverify参数解决同步超时、重置连接错误

    报错信息 Failed to connect to github.com port 443 after 21082 ms: Timed out OpenSSL SSL_read: Connection ...

  8. 解决Typora文件夹中的.md文件到另一台笔记本图片丢失问题

    我们第一次使用Typora的时候难免是没有设置图片保存路径的,所以在我们记笔记插入图片的时候,如果是自己截的图就会默认保存到c盘Typora软件自建的某目录,如果是从网络上复制的图片贴到笔记中,则没有 ...

  9. android 编译 oserror,jdk/java版本与Android源码编译中的错误

    错误一:javap未指向有效的java版本 Traceback (most recent call last): File"../../base/android/jni_generator/ ...

最新文章

  1. 洛谷1279 字串距离
  2. android weex跳转闪退,关于weex页面在android端跳转的问题
  3. html converttopdf无法换行_超文本标记语言的段落与换行显示!
  4. 机器学习-决策树(Decision Tree)
  5. 如何以sandbox模式测试开发好的Fiori Launchpad插件
  6. python 系统学习笔记(十二)---os os.path os.walk
  7. 从 GMM 到 EM 算法
  8. 【HTML】【简易电子相册】超链接
  9. 《大型网站技术架构:核心原理与案例分析李智慧》pdf版电子书网盘附下载链接+仪式感技术书阅读法
  10. excel批量替换不同值(根据多个条件匹配、替换不成功的解决办法)
  11. 通过搭建FTP站点实现上传与下载
  12. 【汇编语言】第三章 寄存器(内存访问)
  13. Windows XP SP3版本美化成Vista界面详解
  14. “真智能”黑马杀出,智能家居的下一战要攻破场景化?
  15. 几行代码教你爬取LOL皮肤图片
  16. Jenkins 如何使用 CrumbIssuer 防御 CSRF 攻击
  17. 自动转义json的两种方法
  18. custom的短语_custom的用法总结大全
  19. swust oj 996 打印杨辉三角形
  20. 零基础学Linux运维,看这一篇就够了(含30G自学教程笔记)

热门文章

  1. 嵌入式操作系统内核原理和开发(内存分配算法)
  2. 最后一块石头的重量II
  3. c++三五法则(适合学完一遍不怎么清楚的童鞋)
  4. C++ STL deque容器添加和删除元素方法完全攻略
  5. C++ Primer这本书怎么样?
  6. shell编程-实现线性筛
  7. [BUUCTF-pwn]——[BJDCTF 2nd]secret
  8. 8s yaml 配置生成_cfg4py:一个严肃的Python配置模块应有的风格-层级式、部署环境自适应、自动补全...
  9. 使用python自己搭建一个简单的BP神经网络
  10. 使用jackson转换类型时报Unrecognized field