after transplanting the program today, there was an error report of “error [li005]: no definition for” during compilation, which was encountered and solved before. Today, I’m going to officially record the causes and solutions of this error.
1. Reasons
just look at the error reminder given by IAR, “error [li005]: no definition for xxxxx”, which means that xxxxx is not defined (all cases I encounter refer to a function), but find the problem yourself, and you will find that this xxxxx has been defined in other C files, and this xxxxx function has been declared in the header file corresponding to this C file, And the path of the header file has been included in the IAR settings. There should be no problem! Then I began to wonder.
2. Solutions
let’s talk about the solution to this problem:
2.1 the C file where the xxxxx function is located is not added in the project
most of this happens because you accidentally removed the C file from the project, and you haven’t noticed it. The solution is very simple. Add the C file to the project again and recompile it.
2.2 when using conditional compilation, the xxxxx function is not compiled
this is why I have this problem this time. Let me give you an example:
#define FANJIE 1
#if FANJIE
void Get_Fans(void)
{
for(int i = 0; i<100;i++);
}
#endif
Take the simple function above as an example, when FANJIE is 1, call Get_Fans() in other c files, and no error will be reported, but when FANJIE is 0, call Get_Fans() in other c files Function, it will report the error “Error[Li005]: no definition for Get_Fans”.
The solution is also very simple, just make sure that the conditional compilation can be compiled normally.