C51编译警告“*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL” 及extern的运用剖析

Keil C51混合编程中?C_STARTUP链接警告解决方案 在嵌入式开发中,C语言与汇编混合编程是提升性能的常见技术手段。Keil C51工具链在编译链接阶段可能遇到UNRESOLVED EXTERNAL SYMBOL警告,特别是缺失?C_STARTUP符号时,会导致运行时环境初始化失败。这涉及编译器工作原理、库文件依赖管理以及内存模型配置等核心技术点。通过分析启动代码机制和链接流程,开发者可以掌握如何正确添加C51S.LIB等运行时库,确保全局变量初始化和堆栈设置正确。该技术广泛应用于8051单片机开发中,特别是需要精细控制硬件或优化关键代码段的场景。解决此类库依 阅读详情
AI摘要

本文详细解析了C51编译时遇到的“未解决外部符号”警告及其原因,包括未添加C文件到项目及未正确声明或定义全局变量等问题,并提供了具体的解决方案。

 

C51编译警告“*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL”

 *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL

    SYMBOL:  ?C_START

    MODULE:  .STARTUP.obj (?C_STARTUP)

 *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

    SYMBOL:  ?C_START

    MODULE:  .STARTUP.obj (?C_STARTUP)

    ADDRESS: 000DH

         如果你在用C51编译器出现上面的警告,并且找遍了网上也没能找出个究竟时,你是否觉得这个问题很难,难得以至于没人能回答呢?

        其实这个只是初学者和粗心者才会犯的错误:没把C文件添加到项目中!

///另外,还有可能是因为存在没有被调用的已经定义的函数。

 

源文档 <http://blog.163.com/paulucy@126/blog/static/94930282200911240504985/>

 

 


c/c++语言中有很多地方要用到extern,但是如果没有真正的了解它的意义,会给编程带来很大的麻烦,为了使大家少走弯路,特祥细的说明一下。

    对于比较小的程序,一般只有一个c文件和一个头文件,全局变量我们通常会直接定义在c文件中,在程序之前加int i定义。如果要在头文件中定义有以下两种方法:用extern来声明:extern int i;这一句只是对变量i进行声明,在c文件的程序之前必须加上int i进行定义。extern int i=0;这一句声明和定义都做了。

    对于大一点的程序,有很多c文件和头文件,这个时候全局变量就必须在头文件中声明,然后在一个c文件中定义。如果在头文件中定义,则编译的时候会出现重复定义的错误。如果只有头文件中声明就会出现没有定义有警告。

   *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS

       SYMBOL:  K

       MODULE:  222.obj (222)

  出现上述错误则是因为变量k重复定义,把你的头文件中的变量定义前加extern,再在某一个c文件的程序之前再定义一下就可以了。

    *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL

    SYMBOL:  K

    MODULE:  111.obj (111)

*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

    SYMBOL:  K

    MODULE:  111.obj (111)

    ADDRESS: 000DH

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL

    SYMBOL:  K

    MODULE:  222.obj (222)

*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

    SYMBOL:  K

    MODULE:  222.obj (222)

    ADDRESS: 001FH

   这四个警告就是变量k在头文件中有声明,但是没有定义,只需在某一个c文件的程序之前定义一下即可。

 

源文档 <http://www.cublog.cn/u1/47082/showart_375642.html>

 

蓝桥杯 — 编译过程中遇到的问题 遇到的警告: Build target '目标 1' assembling STARTUP.A51... linking...*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START MODULE: STARTUP.obj (?C_STARTUP)*** WARNING L2: REFERENCE MADE TO ... 阅读详情

相关推荐

⭐️白嫖的阿里云认证⭐️ 【真题&参考答案】:大模型Clouder认证:利用大模型提升内容生产能力

【摘要】真题「大模型Clouder认证:利用大模型提升内容生产能力」

davidkorhenn的博客 1925

KEIL4 警告:L1 L2 L16

在Keil C中,如果没有显式调用到定义过的函数,就会出现这样的的警告。当出现这样的警告时,可以不用管,因为不影响其它部分。但是,我们知道,即使没有调用这个函数,Keil仍然把它编译连接进整个程序,不过浪费点ROM倒是不心疼。最主要的是,在这个函数中的变量,不会被列入覆盖分析范围内,也就是说这些变量占的空间不能被回收.另外,还有可能是因为存在没有被调用的已经定义的函数,或者相关的已经定义的变量没有使用。当这个不被调用的函数写在C文件中时,可以把它注释掉来解决这个问题。

LXB11123567的博客 8265

Unity 数字孪生实战:PiXYZ Plugin工业模型高效处理指南

本文是Unity数字孪生实战指南,重点介绍了如何使用PiXYZ Plugin高效处理工业CAD模型。针对工业模型导入Unity时面临的格式壁垒、数据爆炸和资产混乱等核心痛点,文章提供了从环境安装、基础导入到智能减面、资产清理的完整解决方案,并分享了预设自动化、运行时导入等高级技巧与性能优化策略,帮助开发者快速打通工业设计与实时交互流程。

weixin_29009501的博客 257

用keil编写的 C51错误 *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START

可能原因: 替换工程的文件未先 remove该文件。 正常替换文件步骤: 1. 右键 欲 替换的文件,remove XXXXX.c from build ---->remove XXXXX.c from project 2. 右键 Source Files ----> Add file to group Source Files...

weixin_30952535的博客 5962

Silvaco TCAD | GaN HEMT器件仿真与高频功率应用实战

本文详细介绍了使用Silvaco TCAD进行GaN HEMT器件仿真的全流程,涵盖器件结构设计、极化效应建模、高频特性分析及功率损耗优化。通过实战案例展示了GaN HEMT在电动汽车电驱和快充模块等高频功率应用中的性能优势与效率提升策略,为工程师提供可靠的仿真方法与设计验证手段。

desk3的博客 183

中文实体关系抽取数据集大盘点:从百度Duie2.0到医疗CBLUE,哪个更适合你的NLP项目?

本文全面分析了中文实体关系抽取领域的主流数据集,包括百度DuIE 2.0、医疗CBLUE等,帮助开发者根据项目需求选择最适合的数据集。文章详细对比了各数据集的特点、适用场景及优化策略,为自然语言处理项目提供实用指南。

weixin_29284657的博客 121

C51编译警告“*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL” 及extern

C51编译警告“*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL”  *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL     SYMBOL:  ?C_START     MODULE:  .STARTUP.obj (?C_STARTUP)  *** WARNING L2: REFERENCE MADE

opshres169的博客 3万+

上机任务一:空气质量指数 (air quality index,AQI是定量描述空气质量状况的指数。为了更好地了解和人们身体健康息息相关的天气状况,本书模拟生成500条某地区天气数据,一行样本对应一天

调整后的R平方为0.4308,考虑了模型中的自由度,它略低于多重R平方,说明模型的解释能力可能有限。总的来说,新的模型相对于之前的模型在AIC值上更优,包含了最高温度(X2)和最低温度(X3)这两个重要的预测因子,并且对AQI的解释能力较好。在表中,Df表示自由度,Sum Sq表示总平方和,Mean Sq表示均方(总平方和除以自由度),F value表示F统计量,Pr(>F)表示对应的p值。在分析这些结果时,需要关注系数的显著性(p值),系数的方向(正向或负向影响),以及系数的大小(估计值)。

Mrrunsen的博客 723

C语言-C51编译警告“*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL” 及extern

C51编译警告“--- WARNING L1: UNRESOLVED EXTERNAL SYMBOL” ----WARNING L1:UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START MODULE: .STARTUP.obj (?C_STARTUP) ----WARNING L2:REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: ?C_START MODULE: .STA...

sinat_26528193的专栏 1万+

定位教程7---旋转中心标定之方法二

手算相机相对机器人关系

Quintin 6230

[ vulhub漏洞复现篇 ] ActiveMQ反序列化漏洞复现(CVE-2015-5254)

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。......

qq_51577576的博客 4444

*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

C51编译警告“*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL”  *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL     SYMBOL:  ?C_START     MODULE:  .STARTUP.obj (?C_STARTUP)  *** WARNING L2: REFERENCE MADE

opshres169的博客 5万+

multisim14.3无法访问数据库...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 4465

C头文件中使用extern定义全局变量

关于C语言中extern关键词的使用 最近在头文件中使用extern定义全局变量时,出现如下报错: keil51: *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: SETPLACE MODULE: common.obj (COMMON) VC: main.obj : error LNK2001: unresolve...

qq_45237293的博客 6346

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

keil WARNING L1 : UNRESOLVED EXTERNAL SYMBOL 和 WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

keil编译出现如下警告: WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: UART0 MODULE: .\obj\app_uart0.obj (APP_UART0) WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: UART0 MODULE: .\obj\app_uart0.obj (APP_UART0) ADDRESS: 31ACH 解决办法:L1和L2是同...

fenhong91的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C51编程总结-单片机的奇怪知识2(Keil 编译器报错)

Keil奇怪的报错

qq_34343637的博客 4263

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WARNING L1 UNRESOLVED EXTERNAL SYMBOL

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ADC_VAL MODULE: .\main.obj (MAIN) ADC_VAL该参数未定义。

TrueLink的博客 3568

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL Build target 'Target 1'assembling STARTUP.A51...linking...*** WARNING L1: UNRESOLVED EXTER...

diyin9896的博客 1426

keil编译时出现*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL解决:包含该函数或变量的文件未添加到工程

weixin_33825683的博客 2万+

KEIL编程中常见的警告

@##KEIL编程中常见的警告 1、*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS 这句话直译就是“未调用段,忽略覆盖过程”,意思就是说代码中有一个函数,你定义了,却没有调用,图示代码里没有被调用的函数名字即第二行显示的LCD_DAT; 消除方法:调用那个函数或者注释掉那个函数就可以了 2、*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL 这句警告直译为“无法解析的外部符号”,意思就是有包含该

weixin_46628425的博客 1万+

REFERENCE MADE TO UNRESOLVED EXTERNAL.

REFERENCE MADE TO UNRESOLVED EXTERNAL. 原因 使用了一个未定义的外部变量.(经常是在当前文件中声明了 extern xxx , 但其实在其它的文件中没有定义这个变量)

niepangu的专栏 1万+

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: UBMOTOR_CTRL MODULE: .\BinObj\CAM.obj

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: UBMOTOR_CTRL MODULE: .\BinObj\CAM.obj (CAM) *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: UBMOTOR_CTRL MODULE: .\BinObj\CAM.obj (CAM) ADDRESS: C598H, 这个错误有几个可能,我是第三个 原因一:CAM.obj ? 是不是建工

weixin_43823834的博客 1282

C51编译警告“*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL”以及相关的问题

C51编译警告“*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL”以及相关的问题 今天编译程序的时候出现了以下问题: 然后参考了好几个博主的解决方案,编译后还是出现同样警告。后来发现原来是自己忘了添加相应的.c文件了。(很无语。。。) 记录一下自己遇到的问题。 ...

weixin_54524451的博客 1135
上一篇: interrupt 和 using 在C51中断中的使用
下一篇: 芯片(一)--74HC595中文资料
liufei_learning
博客等级 码龄17年 821粉丝 145原创
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值