标题: keil软件连接时出现ERROR L103: EXTERNAL ATTRIBUT DO NOT MATCH PUBLIC [打印本页]

作者: xiaoye000    时间: 2018-5-20 02:10
标题: keil软件连接时出现ERROR L103: EXTERNAL ATTRIBUT DO NOT MATCH PUBLIC
各位大佬,我用keil编译源程序时没问题,可是在连接时,出现以下报错*** ERROR L103: EXTERNAL ATTRIBUT DO NOT MATCH PUBLIC。我试过查询一些解决方法如下图,说是改变外部声明来匹配变量声明,然后我在声明全局变量的时候加了extern,但是之后连接时仍然还会出现上面的报错。              不幸的是,在用了extern声明全局变量之后,又出了一个新的报错*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL,我在.h文件中查看了,也没发现外部参数或函数被覆盖。希望有大佬能帮忙解答一下,该如何解决。

图片1.png (23.55 KB, 下载次数: 107)

图片1.png

作者: xiaoye000    时间: 2018-5-20 12:44
我已将问题找到了,根据报错,在主函数找到了定义的全局变量,在前面加了extern单独进行声明,并重新改了变量名,现在程序已经能够正常连接了。
作者: xiaoye000    时间: 2018-5-20 12:47
我已经将问题解决了,通过报错发现错误变量在主函数中,就单独声明该全局变量,并把变量名更爱后,发现可以正常连接。
作者: liyonghua111    时间: 2023-7-31 12:31
*** ERROR L103: EXTERNAL ATTRIBUT DO NOT MATCH PUBLIC:这个错误通常发生在你在一个文件中声明了一个全局变量或函数,然后在另一个文件中试图使用它,但是两个地方的声明不匹配。例如,你可能在一个文件中声明了一个返回类型为int的函数,但是在另一个文件中尝试将其作为返回void的函数来调用。

*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL:这个错误通常发生在你试图引用一个不存在的外部变量或函数,或者该变量或函数的声明有误。

解决这些问题的方法可能包括:

确保你在所有文件中对同一个全局变量或函数的声明都是一致的。例如,如果你在一个文件中声明了一个返回类型为int的函数,那么你在其他所有文件中都应该将其声明为返回类型为int的函数。

如果你在一个文件中声明了一个全局变量或函数,但是在另一个文件中没有使用extern关键字来引用它,那么你需要添加extern关键字。

检查你的代码,确保你没有试图引用一个不存在的外部变量或函数。

如果你在.h文件中声明了一个全局变量或函数,但是在.c文件中没有找到对应的定义,那么你需要在.c文件中添加对应的定义。

希望这些信息能够帮助你解决问题。如果你还有任何疑问,欢迎随时向我提问。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1