在用keil编辑的时候提示这两条,怎么都找不出原因。
.objDebugmain.axf:Error:L6200E:Symbol__ARM_use_no_argvmultiplydefined(bylcd.oandmain....
.objDebugmain.axf: Error: L6200E: Symbol __ARM_use_no_argv multiply defined (by lcd.o and main.o)..objDebugmain.axf: Error: L6200E: Symbol main multiply defined (by lcd.o and main.o).请问这是那出现的问题啊。我找了半天也没找到原因。
展开
4个回答
展开全部
回复1# yfg123 本质,就是已经定义了两个main函数,自己仔细找一下,看有没有两个定义。解决方法如下:
1、首先打开Keil,新建一个汇编语言文件,在其中输入汇编代码,同时在最开头加入。
2、将汇编源文件进行编译。可以看到,编译结果窗口输出了一连串的error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL,每个ERROR都指向REG51.INC。
3、出现这种问题的原因在于REG51.INC对特殊寄存器进行了定义,选择汇编源文件,在弹出的列表中选择“Options for FIle:xxx”,其中xxx是具体的文件名。
4、在弹出的对话框中,找到Special Function Registers,将它下面的Define 8051 SFR Names取消勾选。
5、这时可以看到error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL没有了。
展开全部
multiply defined指重复定义,说明存在变量在编译的过程中被至少两次定义。我遇到过的是我在common.h中定义了变量,然后其它.h文件又引用了common.h,这就使得keil每次编译其它.h时都会重复定义common.h中的变量,从而造成了重复定义(multiply defined)。本题为例,若存在led.h中有变量 char led0 =0这样的变量定义,在编写main.h的时候引用了#include “led.h”,编译就会出现重复定义。因此,建议将变量的定义放在.c文件中,这样若要在其它.c文件使用该变量,可以使用extern关键字。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-13
展开全部
提示已经很清楚了,重复定义,在led和main两个文件中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-13
展开全部
回复 1# yfg123 本质,就是你已经定义了两个main函数,你要自己仔细找一下,看有没有两个定义。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |