I was trying to add the Helix MP3 decoder to my embedded project for almost couple of days, but because the library was built with gcc toolchain, I had plenty of issues compiling under Keil uVision.
I thought the only viable option would be creating a static lib.a file with gcc based toolchain and having that linked with ArmLink in uVision. Unfortunately, that did not work for me either. After linking/including the library I created with gcc in my Keil uVision project, I get over a dozen of errors from the linker like this one:
Error: L6242E: Cannot link object mp3dec.o as its attributes are incompatible with the image attributes.
I tried to add the following flag to the compiler: --wchar32, but that caused the linker to complain about something else:
STM32F407_MPMB\STM32F407_MPMB.axf: Error: L6406E: No space in execution regions with .ANY selector matching buffers.o(.bss).
STM32F407_MPMB\STM32F407_MPMB.axf: Error: L6407E: Sections of aggregate size 0x6ac8 bytes could not fit into .ANY selector(s).
I'm not very familiar with the linker scripts/options, memory sections, scatter file, but would love to learn about it if that helps!
Anyways, I have no problem getting things done with the Eclipse-Based gcc toolchain, however, I started to use Keil uVision for several projects recently and would like to stick with it for this one, at least for some time.