mercredi 30 mars 2016

Error: multiple definition of `fprint' - while using SDL_ttf

I have a custom library that utilises this code (http://ift.tt/1RKrd13). The linked code was written for Visual Studio; I am using CodeLite on Windows.

Its has a SpriteFont.cpp that uses fprintf.

The static library that has SpriteFont as part of it compiles fine on its own and produces a *.a quite happily.

However when I use SpriteFont via other code, I get a linker error (if I am not mistaken):

D:/Coding/TDM-GCC-32/bin/g++.exe -o ./Debug/tmp @"tmp.txt" -L. -L../deps/lib/ -L../bengine/lib/  -lbengine -lSDL2_ttf -lSDL2main -lSDL2 -lopengl32 -lglew32
D:/Coding/TDM-GCC-32/bin/../lib/gcc/mingw32/5.1.0/../../../libmsvcrt.a(dsnos00619.o):(.text+0x0): multiple definition of `fprintf'
../bengine/lib//libbengine.a(SpriteFont.cpp.o):D:/Coding/TDM-GCC-32/include/stdio.h:243: first defined here

I have read all over and found some similar situations but nothing that I have managed to use to resolve this.

It sounds like there is an issue with the way TDM-GCC redefines fprint in its' stdio.h, but I can't see how. Upon further examination, I believe the problem may lie with SDL_ttf, which is used by SpriteFont.

Also, I have tried using other functions from stdio.h and they compile fine; problem only seems to be fprintf

I have tried to create a barebones program to illustrate the problem. Hope it helps. Hopefully the fact it is a CodeLite project won't be a source of irritation. If I can provide more info or code please ask.

Aucun commentaire:

Enregistrer un commentaire