cancel
Showing results for 
Search instead for 
Did you mean: 

Receiving multiple definition build error when using SSD1306 driver

CKohl.3
Associate II

I'm new to STM32 and my C skills are very rusty

I'm trying to create a simple program to demo the usage of an Adafruit SSD1306 SPI OLED board

In my main.c I need to #include "ssd1306.h" from this driver because I need some of the definitions.

The problem is that I'm receiving a bunch of multiple definition errors. For example:

multiple definition of `HAL_EXTI_ClearConfigLine'; ./Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti 3.o:/Users/chrisk/Documents/STM32CubeIDE/workspace_1.11.0/STM32_AdafruitSSD1306_128x32_Example/Debug/../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti 3.c:318: first defined here	stm32f0xx_hal_exti.c	/STM32_AdafruitSSD1306_128x32_Example/Drivers/STM32F0xx_HAL_Driver/Src	line 318	C/C++ Problem
multiple definition of `HAL_EXTI_ClearPending'; ./Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti 3.o:/Users/chrisk/Documents/STM32CubeIDE/workspace_1.11.0/STM32_AdafruitSSD1306_128x32_Example/Debug/../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti 3.c:497: first defined here	stm32f0xx_hal_exti.c	/STM32_AdafruitSSD1306_128x32_Example/Drivers/STM32F0xx_HAL_Driver/Src	line 497	C/C++ Problem
multiple definition of `HAL_EXTI_GenerateSWI'; ./Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti 3.o:/Users/chrisk/Documents/STM32CubeIDE/workspace_1.11.0/STM32_AdafruitSSD1306_128x32_Example/Debug/../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti 3.c:518: first defined here	stm32f0xx_hal_exti.c	/STM32_AdafruitSSD1306_128x32_Example/Drivers/STM32F0xx_HAL_Driver/Src	line 518	C/C++ Problem

If I remove the #include "ssd1306.h" line that problem goes away, but I need the definitions so this isn't a viable solution.

My best guess is that ssd1306.h is including a resource around line 18 that is included someplace else and therefore causes the multiple definition error. More likely I'm totally missing something important.

Any ideas or suggestions?

Thanks!

Chris

This discussion is locked. Please start a new topic to ask your question.
2 REPLIES 2
S.Ma
Principal

does your ssd1306.h file have the code wrap something like this:

#ifndef _SSD1306_H_

#define _SSD1306_H_

(...)

#endif

?

CKohl.3
Associate II

I solved this, but I don't understand the root cause.

I found copies of most or all of the STM32F0xx_HAL_Driver .c files that were causing the issue. These copies were identical except for a " 3.c" extension. I have no idea how these were created, but when I deleted them the issue above went away.