我有一个使用此代码的自定义库(https://www.dropbox.com/s/iwft7snjmntf160/SoASpriteFont.zip?dl=0)。链接代码是为 Visual Studio 编写的;我在 Windows 上使用 CodeLite。
它有一个 SpriteFont.cpp 使用fprintf
.
将 SpriteFont 作为其一部分的静态库可以自行编译并*.a
非常愉快地生成。
但是,当我通过其他代码使用 SpriteFont 时,出现链接器错误(如果我没记错的话):
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
我通读了一遍,发现了一些类似的情况,但我没有设法解决这个问题。
听起来 TDM-GCCfprint
在其 '中重新定义的方式存在问题stdio.h
,但我看不出如何。经过进一步检查,我认为问题可能出在 SpriteFont 使用的SDL_ttf上。
另外,我尝试过使用其他函数stdio.h
,它们编译得很好;问题似乎只是fprintf
我试图创建一个准系统程序来说明这个问题。希望能帮助到你。希望它是一个 CodeLite 项目的事实不会成为刺激的根源。如果我可以提供更多信息或代码,请询问。