搜索
bottom↓
回复: 4

求助,KEIL UV4新版本链接报错

[复制链接]

出0入0汤圆

发表于 2013-4-24 10:41:54 | 显示全部楼层 |阅读模式

很喜欢KEIL UV4新版本的界面,但试装了几个总不成功。在不同的电脑上装了9.06和最新的9.51a版本,编译在原来9.01版上正常的项目,总是会弹出一大堆的链接错误:*** ERROR L121: IMPROPER FIXUP

在网上也找不到解决的办法,而当我在OPTIONS FOR TARGET窗口中勾选LX51代替BL51时,则原来的连接错误全部消失。但网上说LX51是在ROM大于64K时使用的,所以我觉得这种方法不见得是正确的。

我觉得不像是破解的问题,因为我采用评估版的程序编译代码小于2K的程序,仍然有这个问题,勾选LX51选项,错误消失。
有没有人遇到和我相同的问题,为什么我这种现象在网上也搜不到,还请高手解惑?我其实就想尝试一下高版本的,而9.01版的确实没这个问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-4-24 19:53:05 | 显示全部楼层
Keil官網上對於L121的錯誤有些解釋,給你兩個參考鏈接:
http://www.keil.com/support/docs/1270.htm
http://www.keil.com/forum/4864/

出0入0汤圆

 楼主| 发表于 2013-4-25 11:53:51 | 显示全部楼层
找到问题所在了。
我为了模块化编程的方便,让每个C文件对应一个H头文件,头文件除了供给自身的C文件使用外,还用于其他C文件的使用。
譬如说对于key.c文件,开头是这样的,里面本身有全局变量和函数的定义:
#include "key.h"
bdata bit g_bSetKeyVal,g_bUpKeyVal,g_bDownKeyVal;
void SetKeyScan(void)
{
...
}
然后在key.h里我对全局变量和函数进行声明(当然有#ifndef,#endif之类的,这里只是略写):
extern bdata bit g_bSetKeyVal,g_bUpKeyVal,g_bDownKeyVal;
extern void SetKeyScan(void);
这个key.h对于key.c的作用只是用于函数的声明,而全局变量的声明则用于其他文件的使用,这样做只是为了方便,
想用一个头文件来满足本文件和其他文件的使用。譬如说在main.c的开头也可以这样调用:
#include "key.h"

而我的问题恰恰就出在这个上面。
我发现当我在key.h里的全局变量声明里如果位变量采用这种方式声明时:(经验证,即使不用头文件,直接在C中这样声明也有这样的问题)
extern bdata bit g_bSetKeyVal,g_bUpKeyVal,g_bDownKeyVal;
就会在链接时出现*** ERROR L121: IMPROPER FIXUP的错误。(错误处就是所有对外部位变量进行调用的地方)
而当我把声明中的bdata去掉,即按下面的方式声明:
extern bit g_bSetKeyVal,g_bUpKeyVal,g_bDownKeyVal;
错误就会完全消失。而声明非bit的类型则不会有这个问题。

这个问题只在我在测试C51 9.06和9.51a时会出现,但在9.01版本里不会报链接错误,但我同时发现位全局变量如果
赋有初值时,则初值会消失。譬如上面位定义如下时:
bdata bit g_bSetKeyVal=1,g_bUpKeyVal=1,g_bDownKeyVal=1;
在9.01虽然可以正常编译链接通过,而全局变量没有执行初始化。
我本来就是要查这个问题的原因的,没想到换了个新版本的keil居然又有了新问题,而两个问题居然同源,这也算意外的收获吧。
至于为什么会这样,还请方家指教!

出0入0汤圆

发表于 2013-10-18 16:19:14 | 显示全部楼层
souching 发表于 2013-4-25 11:53
找到问题所在了。
我为了模块化编程的方便,让每个C文件对应一个H头文件,头文件除了供给自身的C文件使用外 ...

非常感谢,我的也是这个问题,找了整整一天

出0入0汤圆

发表于 2013-10-18 16:22:25 | 显示全部楼层
c51吗??网上有比较多啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 09:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表