AVR-GCC中未定义的引用

时间:2013-08-30 13:12:17

标签: c avr-gcc

我的main.c如下所示

#include <avr/io.h>
#include<avr/interrupt.h>
#include<util/delay.h>
#include <string.h>
#include "main.h"
#include "globle.h"
#include "LCD.h"

int  main()

{

...
...
...

lcdInit(0xc0);
lcdScreen(0);
.
.
.


return 0; 

}

lcdInit(0xc0)的定义;和lcdScreen(0);在我的lcd.c文件中 我有一个头文件lcd.h,其中包含以下行:

void lcdInit(char);
void lcdScreen(char);

但我还是得到了:

  

C:\ Documents and Settings \ Tanv \ My Documents \ my_project5 \ default /../ Main.c:95:&gt; undefined&gt; reference to   `lcdInit'

  

C:\ Documents and Settings \ Tanvr \ My   Documents \ my_project5 \ default /../ Main.c:96:未定义引用   `lcdScreen'

这里有什么问题?

3 个答案:

答案 0 :(得分:3)

这是链接器错误。

您没有正确构建程序,需要将所有C文件一起编译,如下所示:

$ gcc-avr -o program main.c lcd.c

如果单独编译,则将它们从目标文件链接在一起。

答案 1 :(得分:1)

enter image description here

将源和头文件添加到项目中 1.右键单击“源文件”,然后“添加现有源文件” 2.右键单击“Header Files”,然后“Add Existing Header File(s)”

请参阅Add Source to Project第6步。

答案 2 :(得分:1)

我遇到了同样的问题,我从一开始就将文件添加到项目中,然后将它们一起编译。但这并不能解决问题,我偶然发现自己犯了一个错误,即该库功能的实现文件扩展名为.c,主扩展名为.cpp。为了解决该问题,我只是将项目重新打包为c格式。