江北一阳指 发表于 2025-4-22 12:16:00

一个简单的数码管程序,链接时出错,说是有重复定义

Rebuild target 'Target 1'
compiling Demo.c...
Demo.c(81): warning C138: expression with possibly no effect
compiling delay.c...
compiling smg.c...
linking...
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:WEI_t
    MODULE:.\Objects\smg.obj (smg)
   DEFINED:.\Objects\Demo.obj (Demo)
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:SMG_t
    MODULE:.\Objects\smg.obj (smg)
   DEFINED:.\Objects\Demo.obj (Demo)
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
    NAME:    usb_bulk_intr_in/usb
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    NAME:    VSPRINTF/VSPRINTF
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    NAME:    PUTCH/VSPRINTF
Program Size: data=8.3 edata+hdata=435 xdata=192 const=165 code=5003
Target not created.
Build Time Elapsed:00:00:01

江北一阳指 发表于 2025-4-22 12:17:16

想把源程序发上来,没有找到 上传附件 的按钮!

找了好几遍,没有发现“重复定义的情况啊”


静待大神的指点,个人感觉可能是模块包含这方面出问题。

DebugLab 发表于 2025-4-22 12:58:21

插入代码:



上传附件:


angmall 发表于 2025-4-22 17:41:54

替你改了。



angmall 发表于 2025-4-22 19:26:59

这两个数组,不是全部的函数都在用,不可以放在smg.h。


//声明数码管的 码表数组
unsigned int SMG_m[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,\
                      0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

//声明数码管的 位序数组
unsigned int WEI_m[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};


所以才会出这个错误。
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:WEI_t
    MODULE:.\Objects\smg.obj (smg)
   DEFINED:.\Objects\Demo.obj (Demo)
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:SMG_t
    MODULE:.\Objects\smg.obj (smg)
   DEFINED:.\Objects\Demo.obj (Demo)
页: [1]
查看完整版本: 一个简单的数码管程序,链接时出错,说是有重复定义