2024-01-15 03:45 AM
Hello.
I am currently trying to implement our architecture to STM32 but facing several issues. I have external header and source files. I added them from Paths and Symbols, Includes and Source Location respectively. I can reach header file but it looks like either header and source are not connected or project and source are not connected.
In main.c I added
struct examplestruct pM;
ExampleFunction(&pM);
In main.h I added
#include "ExternalHeader.h"
here is ExternalHeader.h
typedef struct examplestruct
{
int exampleint;
};
void inline ExampleFunction(struct examplestruct*);
here is ExternalSource.c
#include "ExternalHeader.h"
void inline ExampleFunction(struct examplestruct* pM)
{
pM->exampleint=1;
}
I am getting undefined reference to 'ExampleFunction' error and inline function 'ExampleFunction' declared but never defined errors.
I looked up some examples but sadly changing location of external files is a big no.
Here is the File Order
ProjectFolder
|STMProject
|ExternalFiles
|HeaderF
|ExampleHeader.h
|SourceF
|ExampleSource.h
Here are the errors.
Description Resource Path Location Type
make: *** [makefile:65: POC.elf] Error 1 POC C/C++ Problem
undefined reference to `ExampleFunction' main.c /POC/Core/Src line 104 C/C++ Problem
Here are the warnings.
Description Resource Path Location Type
inline function 'ExampleFunction' declared but never defined POC line 7, external location: C:\Users\heimat\Desktop\ProofOfConcept\ExternalFiles\HeaderF\ExternalHeader.h C/C++ Problem
useless storage class specifier in empty declaration POC line 4, external location: C:\Users\heimat\Desktop\ProofOfConcept\ExternalFiles\HeaderF\ExternalHeader.h C/C++ Problem
2024-01-15 04:07 AM
Remove inline attribute of your function. To be called from other module, a function cannot be inlined.