Sysprogs forums › Forums › VisualGDB › multiple definition 'HAL_…' files
Tagged: Middleware, multiple definition, SD Card, STM32CubeMX
- This topic has 3 replies, 2 voices, and was last updated 7 years, 4 months ago by support.
-
AuthorPosts
-
August 14, 2017 at 18:23 #12016efpkopParticipant
(This is related to my parallel post at https://sysprogs.com/w/forums/topic/stm32cubemx-simple-sd-card-project-missing-ff-h/). I am creating a simple SD Card project in STM32CubeMX software and trying to export the files into Visual Studio. When I follow the basic Cube-to-VisualGDB instructions in the tutorial https://visualgdb.com/tutorials/arm/stm32/cube/ the Middleware libraries are not exported into the project directory and my project fails to build.
However, if, while exporting from Cube, I click the ‘Copy only the necessary library files’ radio button (and not the ‘Add necessary library files…’ radio button on the Code Generator Tab, the Middleware libraries are successfully exported and I solve the ff.h problem I identified in my other post.
However, now I get a new error when building where many of the HAL_xxx library files are getting defined twice. How do I correct this and get this simple SD Card example working in VisualGDB?
An example of the error I’m getting is:
C:\Tutorials\Cube_SDIO_Mark1\SDIO_Mark1\SDIO_Mark1\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c(174): error : multiple definition of `HAL_Init’
1> Debug/stm32f4xx_hal.o:C:\Tutorials\Cube_SDIO_Mark1\SDIO_Mark1\SDIO_Mark1/../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c:174: first defined here
1> Debug/stm32f4xx_hal.o: In function `HAL_Init’:It then continues to give me a huge # of this kind of error for all sorts of HAL_ files.
Is there some setting or path I need to disable to avoid these double definitions?
- This topic was modified 7 years, 4 months ago by efpkop.
August 15, 2017 at 05:19 #12029supportKeymasterHi,
Please try removing the reference to the “STM32 HAL” on the Embedded Frameworks page of VisualGDB Project Properties.
August 15, 2017 at 14:33 #12033efpkopParticipantThat solved the multiple definition problem. I also had to explicitly point at a few header directories. However, now I’m getting an error that the ST device I’m using has not been specified. For example, I’m getting:
C:\Tutorials\Cube_SDIO_Mark1\SDIO_Mark1\SDIO_Mark1\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h(193,3): error : #error “Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)”
I believe I have to add the line:
#define STM32F405xx
But I’m not sure if I need to add it to a particular file – or do you specify it in the project properties?
August 16, 2017 at 04:00 #12052supportKeymasterHi,
Yes, you could specify it in project properties. Another alternative would be to use this build: http://sysprogs.com/files/tmp/VisualGDB-5.3.5.1722.msi
It supports importing STM32CubeMX projects out-of-the-box and will set all the necessary flags automatically as long as you select “Import an existing STM32CubeMX project” from the wizard.
The feature is very new, so it might have a few bugs here and there, so feel free to let let us know if anything doesn’t work and we will fix it.
-
AuthorPosts
- You must be logged in to reply to this topic.