乐鑫技术交流
直播中

陈静

7年用户 1303经验值
私信 关注
[问答]

编译器报lcd_init没有定义怎么解决?

问题描述:编译器告诉我lcd_init没有定义,这个函数我在ILI9341里面定义了并且也在源文件声明了,这个文件在Hardware目录下,我包含这个.h文件没有报错,但是在使用其中的lcd_init.h包括其他函数都会出现没有被定义的情况,请问我是哪里出现了问题。
希望有大佬能帮我解答一下,俺是初学的萌新!!!附件里面有三张图片,好像不能上传更多了。这个函数的定义和声明被覆盖了,但我确实是在ILI_9341.h和源文件里面声明和定义了,但是就是会报错了                                                                                                                 
       main目录下的CMake                                                                                                                                                                                               
报错                        83cfc4caf536f8375aebbe555e7dafa.png (46.33 KiB) Viewed 147 times                                                                                                        
                                                                                                                                                

回帖(1)

张燕

2024-6-5 16:00:33
根据你的描述,这个问题可能是由于以下几个原因导致的:

1. **头文件包含路径问题**:确保你的编译器能够找到`ILI_9341.h`文件。检查你的项目设置,确保包含路径设置正确。

2. **头文件重复定义**:如果你在多个地方包含了`ILI_9341.h`,可能会导致重复定义的问题。确保只在一个文件中包含这个头文件。

3. **头文件保护**:确保你的头文件使用了头文件保护(也称为头文件守卫)。这样可以防止头文件被重复包含。例如:

```c
#ifndef ILI_9341_H
#define ILI_9341_H

// 你的函数声明和定义

#endif // ILI_9341_H
```

4. **编译顺序问题**:确保在编译过程中,`ILI_9341.c`文件在`ILI_9341.h`之前被编译。这样,编译器在处理`.h`文件时,已经知道`.c`文件中定义的函数。

5. **函数声明和定义不匹配**:检查你的函数声明和定义是否完全匹配。例如,函数的返回类型、参数类型和数量等。

6. **编译器配置问题**:检查你的编译器配置,确保没有错误地设置编译选项,如优化级别、语言标准等。

为了解决这个问题,你可以尝试以下步骤:

1. 确保`ILI_9341.h`文件的路径正确,并且编译器能够找到它。
2. 在`ILI_9341.h`文件中添加头文件保护。
3. 检查你的项目设置,确保编译顺序正确。
4. 仔细检查函数的声明和定义是否完全匹配。
5. 检查编译器配置,确保没有错误地设置编译选项。

希望这些建议能帮助你解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助你。
举报

更多回帖

×
20
完善资料,
赚取积分