搜索
bottom↓
回复: 24

msp430链接不过

[复制链接]

出0入0汤圆

发表于 2013-8-13 13:44:04 | 显示全部楼层 |阅读模式
Error[e46]: Undefined external "Parse861ShortDescriptors" referred in SimConfig ( D:\项目文件\msp430\msp430例程\MSP430F5438学习板的基本程\开发板程序\msp430i2c\Debug\Obj\SimConfig.r43 )

出现这个问题
能否帮帮看看是什么问题
Parse861ShortDescriptors这个在SimConfig里有有定义
头文件里有,引用了,编译已经过了,到链接就通不过了,
爆出来上述的错误,这个是否和我的设定有关,
是否和RAM溢出有关,请大家给点意见

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2013-8-13 13:47:08 | 显示全部楼层
使用工具IAR,MSP430器件

出0入0汤圆

 楼主| 发表于 2013-8-13 14:12:59 | 显示全部楼层
郁闷,怎么每次发帖都没人解决,最后都我解决!

出0入0汤圆

 楼主| 发表于 2013-8-13 14:19:25 | 显示全部楼层
是不是问题描述不清晰?

出0入0汤圆

发表于 2013-8-13 14:34:40 | 显示全部楼层
是不是头包含不对,你光这样一个提示怎么分析啊,还是你的哪个C文件没有加入工程

出0入0汤圆

 楼主| 发表于 2013-8-13 15:58:06 | 显示全部楼层
没有,有人说是定义静态函数了

出0入0汤圆

发表于 2013-8-13 16:10:02 | 显示全部楼层
头文件没用,关键要找到函数的定义在哪儿

出0入0汤圆

 楼主| 发表于 2013-8-13 16:10:49 | 显示全部楼层
static  byte Parse861ShortDescriptors(byte *)
static  byte Parse861ShortDescriptors(byte *Data)
{
    byte LongDescriptorOffset;
    byte DataBlockLength;
    byte DataInd ;}
变成
  byte Parse861ShortDescriptors(byte *)
  byte Parse861ShortDescriptors(byte *Data)
{
    byte LongDescriptorOffset;
    byte DataBlockLength;
    byte DataInd ;}
链接就通过了有大牛能解释解释吗?

出0入0汤圆

 楼主| 发表于 2013-8-13 16:11:36 | 显示全部楼层
问题虽然解决了,还有点弄不懂

出0入0汤圆

 楼主| 发表于 2013-8-13 16:18:15 | 显示全部楼层
lcofjp 发表于 2013-8-13 16:10
头文件没用,关键要找到函数的定义在哪儿

下面就有函数定义

出0入0汤圆

发表于 2013-8-13 16:55:58 | 显示全部楼层
加上 static 后,这个函数就只能在定义它的 .c 文件中使用了,其他c文件不能调用。  

出0入0汤圆

 楼主| 发表于 2013-8-13 16:59:36 | 显示全部楼层
ringan865 发表于 2013-8-13 16:55
加上 static 后,这个函数就只能在定义它的 .c 文件中使用了,其他c文件不能调用。   ...

这是为什么,给点提示好吗?

出0入0汤圆

发表于 2013-8-13 17:02:03 | 显示全部楼层
static 好像不能跨文件调用吧,相当于局部变量吧

出0入0汤圆

 楼主| 发表于 2013-8-13 17:02:59 | 显示全部楼层
ringan865 发表于 2013-8-13 16:55
加上 static 后,这个函数就只能在定义它的 .c 文件中使用了,其他c文件不能调用。   ...

看网上介绍不可以访问非static函数,反之却可以

出0入0汤圆

发表于 2013-8-13 17:08:44 | 显示全部楼层
yan.ch.ao 发表于 2013-8-13 17:02
看网上介绍不可以访问非static函数,反之却可以

加 static 的目的就是为了限制其他C文件调用的,如果没有 static ,那么默认就是 extern,就可以被外部调用。这个就是这么规定的啊

出0入0汤圆

 楼主| 发表于 2013-8-13 17:27:16 | 显示全部楼层
本帖最后由 yan.ch.ao 于 2013-8-13 17:37 编辑
ringan865 发表于 2013-8-13 17:08
加 static 的目的就是为了限制其他C文件调用的,如果没有 static ,那么默认就是 extern,就可以被外部调 ...


你的意识使用extern声明都不行是吗?

出0入0汤圆

 楼主| 发表于 2013-8-13 17:30:16 | 显示全部楼层
ballack_linux 发表于 2013-8-13 17:17
加了Static,是在编译时就分配入口地址或变量空间,而你Static中定义了非Static的变量,这种非Static是在运 ...

static分配入口地址非Static的变量在运分配有什么关系,我是说:看网上介绍不可以访问非static函数,反之却可以

出0入0汤圆

 楼主| 发表于 2013-8-19 13:09:08 | 显示全部楼层
ringan865 发表于 2013-8-13 17:08
加 static 的目的就是为了限制其他C文件调用的,如果没有 static ,那么默认就是 extern,就可以被外部调 ...

奇怪的是,那个原始工程在KEIL上编译连接都通过了,我原来以为摆阔。C文件了,后来没找到

出0入0汤圆

发表于 2013-8-19 14:09:58 | 显示全部楼层
yan.ch.ao 发表于 2013-8-13 17:27
你的意识使用extern声明都不行是吗?

extern 和static是两选一的关键词,就像数据类型一样只能选一个。

出0入0汤圆

发表于 2013-8-19 14:10:45 | 显示全部楼层
yan.ch.ao 发表于 2013-8-13 17:30
static分配入口地址非Static的变量在运分配有什么关系,我是说:看网上介绍不可以访问非static函数,反之 ...

咳,网上介绍都说了啥,什么不可以访问非static函数?

出0入0汤圆

发表于 2013-8-19 15:00:56 | 显示全部楼层
一般C编译器都是把每个.c文件分别编译再链接,使用了static编译器就认为函数链接时不会使用,所以不放在符号表里(大概是这意思,专业说法忘了..),然后链接时链接器就找不到了。

出0入0汤圆

 楼主| 发表于 2013-8-21 12:22:38 | 显示全部楼层
eleqian 发表于 2013-8-19 15:00
一般C编译器都是把每个.c文件分别编译再链接,使用了static编译器就认为函数链接时不会使用,所以不放在符 ...

原工程51的调试链接成功了,我也感到奇怪,查查也没有包含。C文件

出0入0汤圆

发表于 2013-8-27 15:54:16 | 显示全部楼层
Error[e46]: Undefined external "Parse861ShortDescriptors" referred in SimConfig ( D:\项目文件\msp430\msp430例程\MSP430F5438学习板的基本程\开发板程序\msp430i2c\Debug\Obj\SimConfig.r43 )


外部变量未定义,去掉static后变成全局变量就可以链接成功了,51里面要看kail的编译选项才知道为啥,应该是有个选项可以定义链接的时候错误检查的级别

出0入0汤圆

发表于 2013-9-9 15:26:09 | 显示全部楼层
auto,register,extern,static四种存储说明符,不能同时使用。你的问题是static和extern同时使用了,所以报错

出0入0汤圆

发表于 2013-9-10 10:55:50 | 显示全部楼层
一般来说,声明和定义都是要一致的。
楼主是不是在.h文件中声明了extern 在c文件中定义的是static?
static声明的函数或变量只能在本.c文件中使用。否则链接的时候会报错。找不到标识符。

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

本版积分规则

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

GMT+8, 2024-5-19 08:21

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

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