Using Edge-Impulse files from /lib

Hello all,

I’m working on a project & come across an issue I hoping someone has a solution to…

My project is uses an Edge Impulse library on a ESP32. Edge impulse supplies the model wrapped in numerous files & folder, including tensorflow. The code linked above is currently compiling & running successfully.

However for better code layout & unit testing I’d like to move this code into /lib. Below I attach a directory structure. My issue is that at the linking stage I get numerous errors:

/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `ei::spectral::processing::spectral_power_edges(ei::ei_matrix*, ei::ei_matrix*, ei::ei_matrix*, ei::ei_matrix*, float)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/dsp/spectral/processing.hpp:318: multiple definition of `ei::spectral::processing::spectral_power_edges(ei::ei_matrix*, ei::ei_matrix*, ei::ei_matrix*, ei::ei_matrix*, float)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/dsp/spectral/processing.hpp:318: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `ei::spectral::processing::periodogram(ei::ei_matrix*, ei::ei_matrix*, ei::ei_matrix*, float, unsigned short)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/dsp/spectral/processing.hpp:376: multiple definition of `ei::spectral::processing::periodogram(ei::ei_matrix*, ei::ei_matrix*, ei::ei_matrix*, float, unsigned short)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/dsp/spectral/processing.hpp:376: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `fill_input_tensor_from_matrix(ei::ei_matrix*, TfLiteTensor*)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:60: multiple definition of `fill_input_tensor_from_matrix(ei::ei_matrix*, TfLiteTensor*)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:60: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `fill_input_tensor_from_signal(ei::ei_signal_t*, TfLiteTensor*)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:114: multiple definition of `fill_input_tensor_from_signal(ei::ei_signal_t*, TfLiteTensor*)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:114: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `fill_output_matrix_from_tensor(TfLiteTensor*, ei::ei_matrix*)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:237: multiple definition of `fill_output_matrix_from_tensor(TfLiteTensor*, ei::ei_matrix*)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:237: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `fill_result_struct_from_output_tensor_tflite(ei_impulse const*, TfLiteTensor*, TfLiteTensor*, TfLiteTensor*, ei_impulse_result_t*, bool)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:293: multiple definition of `fill_result_struct_from_output_tensor_tflite(ei_impulse const*, TfLiteTensor*, TfLiteTensor*, TfLiteTensor*, ei_impulse_result_t*, bool)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:293: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `run_nn_inference_from_dsp(ei_nn_tflite_eon_t const*, ei::ei_signal_t*, ei::ei_matrix*)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:174: multiple definition of `run_nn_inference_from_dsp(ei_nn_tflite_eon_t const*, ei::ei_signal_t*, ei::ei_matrix*)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:174: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `run_nn_inference(ei_impulse const*, ei::ei_matrix*, ei_impulse_result_t*, bool)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:232: multiple definition of `run_nn_inference(ei_impulse const*, ei::ei_matrix*, ei_impulse_result_t*, bool)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:232: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o):/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-impulse/include/model-parameters/dsp_blocks.h:35: multiple definition of `ei_dsp_blocks'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-impulse/include/model-parameters/dsp_blocks.h:35: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `run_nn_inference_image_quantized(ei_impulse const*, ei::ei_signal_t*, ei_impulse_result_t*, bool)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:285: multiple definition of `run_nn_inference_image_quantized(ei_impulse const*, ei::ei_signal_t*, ei_impulse_result_t*, bool)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:285: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `extract_tflite_eon_features(ei::ei_signal_t*, ei::ei_matrix*, void*, float)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:361: multiple definition of `extract_tflite_eon_features(ei::ei_signal_t*, ei::ei_matrix*, void*, float)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:361: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `run_inference':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:128: multiple definition of `run_inference'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:128: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `process_impulse':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:166: multiple definition of `process_impulse'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:166: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `process_impulse_continuous':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:251: multiple definition of `process_impulse_continuous'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:251: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o):/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-impulse/include/model-parameters/model_variables.h:29: multiple definition of `ei_classifier_inferencing_categories'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-impulse/include/model-parameters/model_variables.h:29: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `ei_construct_impulse':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:428: multiple definition of `ei_construct_impulse'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:428: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `run_classifier_image_quantized':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:594: multiple definition of `run_classifier_image_quantized'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:594: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `run_classifier_init':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:617: multiple definition of `run_classifier_init'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:617: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `run_classifier_deinit':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:658: multiple definition of `run_classifier_deinit'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:658: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `run_classifier_continuous':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:679: multiple definition of `run_classifier_continuous'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:679: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `run_classifier':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:720: multiple definition of `run_classifier'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_run_classifier.h:720: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `ei_classifier_smooth_init(ei_classifier_smooth*, unsigned int, unsigned char, float, float)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_classifier_smooth.h:48: multiple definition of `ei_classifier_smooth_init(ei_classifier_smooth*, unsigned int, unsigned char, float, float)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_classifier_smooth.h:48: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `ei_classifier_smooth_update(ei_classifier_smooth*, ei_impulse_result_t*)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_classifier_smooth.h:66: multiple definition of `ei_classifier_smooth_update(ei_classifier_smooth*, ei_impulse_result_t*)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_classifier_smooth.h:66: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o): in function `ei_classifier_smooth_free(ei_classifier_smooth*)':
/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_classifier_smooth.h:135: multiple definition of `ei_classifier_smooth_free(ei_classifier_smooth*)'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-eimpulse-sdk-lib/src/edge-impulse-sdk/classifier/ei_classifier_smooth.h:135: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o):/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-impulse/include/model-parameters/model_variables.h:33: multiple definition of `ei_dsp_config_3'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-impulse/include/model-parameters/model_variables.h:33: first defined here
/home/owen/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev-ei/lib7f0/libedge-impulse.a(EdgeImpulse.cpp.o):/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-impulse/include/model-parameters/model_variables.h:31: multiple definition of `ei_dsp_config_3_axes'; .pio/build/esp32dev-ei/src/main.o:/home/projects/ELOC-3.0/eloc610LowPowerPartition/lib/edge-impulse/include/model-parameters/model_variables.h:31: first defined here
collect2: error: ld returned 1 exit status
*** [.pio/build/esp32dev-ei/firmware.elf] Error 1

Perhaps I could manually edit these files to resolve these issues but there a few hundred files & this project is a an intensive development phase. This Edge Impulse library is liable to be updated & changed numerous times.

Would anyone have a solution to this problem?

Thanks,

Owen

Project structure:

├── include
├── lib
│   ├── Accel
│   │   └── src
│   ├── audio_input
│   │   └── src
│   ├── buzzer
│   │   └── src
│   ├── CPPANALOGIO
│   │   ├── include
│   │   │   └── CPPANALOG
│   │   └── src
│   │       └── CPPANALOG
│   ├── CPPI2C
│   │   ├── include
│   │   │   └── CPPI2C
│   │   └── src
│   │       └── CPPI2C
│   ├── edge-eimpulse-sdk-lib
│   │   └── src
│   │       └── edge-impulse-sdk
│   │           ├── anomaly
│   │           ├── classifier
│   │           │   └── inferencing_engines
│   │           ├── cmake
│   │           │   └── zephyr
│   │           ├── CMSIS
│   │           │   ├── Core
│   │           │   │   └── Include
│   │           │   ├── DSP
│   │           │   │   ├── Include
│   │           │   │   │   └── dsp
│   │           │   │   ├── PrivateInclude
│   │           │   │   └── Source
│   │           │   │       ├── BasicMathFunctions
│   │           │   │       ├── BayesFunctions
│   │           │   │       ├── CommonTables
│   │           │   │       ├── ComplexMathFunctions
│   │           │   │       ├── ControllerFunctions
│   │           │   │       ├── DistanceFunctions
│   │           │   │       ├── FastMathFunctions
│   │           │   │       ├── FilteringFunctions
│   │           │   │       ├── InterpolationFunctions
│   │           │   │       ├── MatrixFunctions
│   │           │   │       ├── QuaternionMathFunctions
│   │           │   │       ├── StatisticsFunctions
│   │           │   │       ├── SupportFunctions
│   │           │   │       ├── SVMFunctions
│   │           │   │       └── TransformFunctions
│   │           │   └── NN
│   │           │       ├── Include
│   │           │       └── Source
│   │           │           ├── ActivationFunctions
│   │           │           ├── BasicMathFunctions
│   │           │           ├── ConcatenationFunctions
│   │           │           ├── ConvolutionFunctions
│   │           │           ├── FullyConnectedFunctions
│   │           │           ├── NNSupportFunctions
│   │           │           ├── PoolingFunctions
│   │           │           ├── ReshapeFunctions
│   │           │           ├── SoftmaxFunctions
│   │           │           └── SVDFunctions
│   │           ├── dsp
│   │           │   ├── dct
│   │           │   ├── image
│   │           │   ├── kissfft
│   │           │   ├── spectral
│   │           │   └── speechpy
│   │           ├── porting
│   │           │   ├── arduino
│   │           │   ├── espressif
│   │           │   │   └── ESP-NN
│   │           │   │       ├── include
│   │           │   │       └── src
│   │           │   │           ├── activation_functions
│   │           │   │           ├── basic_math
│   │           │   │           ├── common
│   │           │   │           ├── convolution
│   │           │   │           ├── fully_connected
│   │           │   │           ├── pooling
│   │           │   │           └── softmax
│   │           │   ├── ethos-core-driver
│   │           │   │   ├── include
│   │           │   │   └── src
│   │           │   ├── infineon-psoc62
│   │           │   ├── renesas-ra6m5
│   │           │   └── seeed-vision-ai
│   │           ├── tensorflow
│   │           │   └── lite
│   │           │       ├── c
│   │           │       ├── core
│   │           │       │   └── api
│   │           │       ├── kernels
│   │           │       │   └── internal
│   │           │       │       ├── optimized
│   │           │       │       └── reference
│   │           │       │           └── integer_ops
│   │           │       ├── micro
│   │           │       │   ├── kernels
│   │           │       │   └── memory_planner
│   │           │       └── schema
│   │           └── third_party
│   │               ├── flatbuffers
│   │               │   └── include
│   │               │       └── flatbuffers
│   │               ├── gemmlowp
│   │               │   ├── fixedpoint
│   │               │   └── internal
│   │               └── ruy
│   │                   └── ruy
│   │                       └── profiler
│   ├── edge-impulse
│   │   ├── include
│   │   │   └── model-parameters
│   │   └── src
│   │       └── tflite-model
│   ├── esp32Time
│   │   └── src
│   ├── IO_expander
│   │   └── src
│   ├── sd_card
│   │   └── src
│   ├── spiffs
│   │   └── src
│   └── wav_file
│       └── src
├── src
│   └── utils
├── test
│   └── test_edge-impulse
└── tools

For anyone looking at this…

For my project I had moved the sound inferencing functions into external files:

EdgeImpulse.cpp
EdgeImpulse.hpp

Initially I had

#include "edge_impulse_inferencing_file.h" 

in EdgeImpulse.hpp

Moving it to EdgeImpulse.cpp solved the issue…