keil工程Error: L6218E: Undefined symbol main (referred from rtentry2.o).

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keil工程Error: L6218E: Undefined symbol main (referred from rtentry2.o).相关的知识,希望对你有一定的参考价值。

我按照网上的教程一步步的建立,结果出现了这样的错误,哪位高手指点一下呀,快疯了,十分感谢!

1,main这个符号未定义。

解决:写成 void mian(),而不是 main()。

2,大多数是因为未加main.c文件于工程中或main单词拼写错误。

解决:仔细检查程序代码,看是否出现拼写错误,修改main单词。

如果自己的程序并没有出现上述这两种情况,可能是因为《ARM处理器裸机开发实战——机制而非策略》这本书自定的启动代码是根据ADS1.2软件编写的自定义的启动代码里定义了Main(),而自己定义的函数为main,自己现在的运行环境为MDK软件,应该需要的是main()函数。

扩展资料:

改进程序:

#include <lpc213x.h>

#include <lcd.h>
#include <stdio.h>

unsigned int read_adc();

void mian()
unsigned int adc_result; char buffer[16]; PINSEL1|=0x00800000; AD0CR=0x00200301; while(1) adc_result=read_adc(); sprintf(buffer,"result=%d",adc_result); lcd_init(); lcd_gotoxy(0,0); lcd_print(buffer);


unsigned int read_adc()
int true; unsigned int result; AD0CR|=0x01000000; true=AD0GDR&1; while(!true) result=(AD0GDR>>5); result&=0x3FF; return result;

main函数:

又称主函数,是程序执行的起点,main是相对来说的,如同音学理论之主调于泛音,泛音即程序中的除main之外的其他函数,迎合人们的思考方式而生成的而非必定的模式.有主有次,执行起来条清缕析,既可将程序模块化又实现了一个闭合的整体。

在C语言当中,一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main() 函数”,也就是“主函数”。比如有个“做菜”程序,那么“ 做菜 ”这个过程就是“主函数”。在主函数中,根据情况,你可能还需要调用“买菜,切菜,炒菜”等子函数。

main函数在程序中大多数是必须存在的,但是依然有例外情况,比如windows编程中可以编写一个动态链接库(dll)模块,这是其他windows程序可以使用的代码。

由于DLL模块不是独立的程序,因此不需要main函数。再比如,用于专业环境的程序-----如机器人中的控制芯片--可能不需要main函数。

参考资料来源:main函数-百度百科

参考技术A http://www.keil.com/forum/16561/
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka4116.html
这个错误是说你没有定义main入口函数,你看看是不是写错了,要跟main一摸一样,大小写也要一致。
参考技术B 我的情况和你一样,不过我的是忘了把main.c加入到工程文件中了。希望以后有人犯这样的错误时可以尽快解决。 参考技术C 应该是没预定义,如果您引用的函数位置在main()函数里 或者在main()函数下边 是要预先定义的,反之在main()函数上面应用的函数就不需要预定义
我是这么记得 有不对的地方请高人请教!
参考技术D 我出现的提示和你一样,不过我是在MAIN。C中忘写主函数了,,写上这个后就通过了
int main()




仅供参考!!

keil编译STM32工程时 #error directive: "Please select first the target STM32F10x device used in your

我们可以双击错误,然后会自动定位到文件 stm32f10x.h 中出错的地方,可以看到代码:

#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined
(STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD)
&& !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined
(STM32F10X_CL)
#error "Please select first the target STM32F10x device used in your application (in stm32f10x.h
file)"
#endif

这是因为 3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配
置 一 个 全 局 的 宏 定 义 变 量 。 按 照 步 骤 16 , 定 位 到 c/c++ 界 面 , 然 后 copy
“STM32F10X_MD,USE_STDPERIPH_DRIVER”到 Define 里面。
这里解释一下,如果你用的是大容量那么 STM32F10X_MD 修改为 STM32F10X_HD,小容
量修改为 STM32F10X_LD. 然后点击 OK。

以上是关于keil工程Error: L6218E: Undefined symbol main (referred from rtentry2.o).的主要内容,如果未能解决你的问题,请参考以下文章

keil5中Undefined symbol XXX 的解决方法

keil5中Undefined symbol XXX 的解决方法

keil5中Undefined symbol XXX 的解决方法

keil5中Undefined symbol XXX 的解决方法

请教用MDK编译出现dfa.axf: Error: L6218E: Undefined symbol

.\Objects\Usart.axf: Error: L6218E: Undefined symbol HAL_NVIC_SetPriority (引用自stm32f4xx_hal.o)