我的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'
这里有什么问题?
答案 0 :(得分:3)
这是链接器错误。
您没有正确构建程序,需要将所有C文件一起编译,如下所示:
$ gcc-avr -o program main.c lcd.c
如果单独编译,则将它们从目标文件链接在一起。
答案 1 :(得分:1)
将源和头文件添加到项目中 1.右键单击“源文件”,然后“添加现有源文件” 2.右键单击“Header Files”,然后“Add Existing Header File(s)”
请参阅Add Source to Project第6步。
答案 2 :(得分:1)
我遇到了同样的问题,我从一开始就将文件添加到项目中,然后将它们一起编译。但这并不能解决问题,我偶然发现自己犯了一个错误,即该库功能的实现文件扩展名为.c
,主扩展名为.cpp
。为了解决该问题,我只是将项目重新打包为c格式。