hqw 发表于 2018-11-23 10:11:55

编译报错

请教下大家,附件的项目编译报错,
    .\Obj\MCU.axf: Error: L6200E: Symbol MUTE_0 multiply defined (by mydspctrl.o and gui_menu.o).
.\Obj\MCU.axf: Error: L6200E: Symbol MUTE_1 multiply defined (by mydspctrl.o and gui_menu.o).
.\Obj\MCU.axf: Error: L6200E: Symbol MUTE_download multiply defined (by mydspctrl.o and gui_menu.o).

这应该是说MUTE_0 ,MUTE_1 重复定义,但我看了,这两就只是在D:Mute_ModesIC_1.h 有过定义,在别处并没有啊

   麻烦大家帮看下,谢谢

子曰好人 发表于 2018-11-23 10:42:24

你这个工程和你描述的错误都不一样,帮你编译了,只是有两个变量没有定义,没有重复定义的内容,另外就是你这个工程里面警告真多。慢慢修改吧
.\Sigmadsp\sequence\Mute_ModesIC_1.h(30): error:#20: identifier "MOD_MUTE1_ALG0_MUTEONOFF_ADDR_" is undefined
        SIGMA_WRITE_REGISTER_BLOCK( MOD_MUTE1_ALG0_MUTEONOFF_ADDR_, 0x0000, 6, MUTE_0);                        /* MuteSWSlewAlg1mute */
.\Sigmadsp\sequence\Volume_ModesIC_1.h(28): error:#20: identifier "MOD_SINGLE1_ALG0_GAIN1940ALGNS1_ADDR_" is undefined
SIGMA_WRITE_REGISTER_BLOCK( MOD_SINGLE1_ALG0_GAIN1940ALGNS1_ADDR_, 0x0000, 6, VOLUME_1);                        /* Gain1940AlgNS1 */
App\MyDspCtrl.c: 1 warning, 2 errors
".\Obj\MCU.axf" - 2 Error(s), 13 Warning(s).

toofree 发表于 2018-11-23 10:46:32

本帖最后由 toofree 于 2018-11-23 10:50 编辑

楼主不走心啊,附件没有更新,还是昨天的文件,出错信息与主楼不一致。
错是在.h文件中定义数组,这是不对的,.h中只能声明,不能定义。如果在.h中定义,那么其它文件中只能在一个地方包含此.h文件。如果在多个文件中包含此.h文件,那么出错是必然的。



你在mydspctrl.c和gui_menu.c中都包含过 #include "Mute_ModesIC_1.h",肯定出错。

#include的作用就是包含,相当于把被包含进的文件中内容,全部复制到本文件中。

andrewsss 发表于 2018-11-23 15:08:46

.h文件里面最好要加上#ifndef---#define---#endif格式的宏,参考标准.h文件,可以避免重复定义出现问题

wenyangzeng 发表于 2018-11-23 15:32:05

楼主有头文件被重复定义了。
页: [1]
查看完整版本: 编译报错