变量的多重定义,而它不是

Posted

技术标签:

【中文标题】变量的多重定义,而它不是【英文标题】:Multiple definition of Variable while it is not 【发布时间】:2019-03-06 12:23:08 【问题描述】:

我正在尝试使用 MPLAB X IDE 编译一个空项目。我刚刚使用 mcc(微芯片代码配置器)仅对时钟进行了第一次配置。 mcc 生成了一堆头文件和源文件,如“traps.c、traps.h、system.h ...等” 当我编译我的项目时,它给了我两种重复的错误,例如: 1-mcc_generated_files/traps.c:121: multiple definition of__MathError__MathError 没有定义变量。只有函数定义了“_MathError”一个下划线

2-c:\program files (x86)\microchip\xc16\v1.35\bin\bin\..\bin/elf-ld.exe: Link Error: section .config_CPRE15%22 [015f78 -> 015f79 ] overlaps section .config_CPRE15%5 [015f78 -> 015f79 ]

我读到它是关于包含 .c 文件的。但是,我没有包含任何 .c 文件,也没有 MCC,头文件中也没有变量定义。 这个编译有什么问题。 问候

【问题讨论】:

【参考方案1】:

我刚才也遇到了同样的问题。它是在我介绍的时候介绍的:

    开始了一个 pic24 模板项目(当然构建得很好) 开始使用 MCC(mplab 代码配置器)添加计时器 那么构建将失败,因为我认为您在上面遇到了同样的问题

问题是模板已经在 Project.X 主文件夹中有一个“traps.c”,因此 Project.X/mcc_generated_files/traps.c 引起了各种编译问题。简单的修复。只需通过右键单击并说从项目中删除来删除生成的代码区域中的那个。您还需要从标题区域中删除 traps.h。

【讨论】:

我没有使用任何模板项目。所以我在项目文件中没有另一个 traps.c 源文件。但是,我猜它在另一个位置,编译器也包含它。你的回答很有帮助。谢谢。

以上是关于变量的多重定义,而它不是的主要内容,如果未能解决你的问题,请参考以下文章

在多文件中C语言中全局变量的重定义

在多文件中C语言中全局变量的重定义

在多文件中C语言中全局变量的重定义

符号解析

出现“error LNK1169: 找到一个或多个多重定义的符号”的原因

为啥 Android Studio 设计器显示我的自定义视图嵌套在自身内部,而它不是