我正在使用VS2005编译程序。我正在链接到SDL静态库,并遇到以下链接器错误;

1>LIBCMTD.lib(fpinit.obj) : error LNK2005: __fltused already defined in SDL2d.lib(SDL_stdlib.obj)
1>LIBCMTD.lib(ftol2.obj) : error LNK2005: __ftol2_sse already defined in SDL2d.lib(SDL_stdlib.obj)
1>   Creating library ..\..\..\product\VS2005\libs\\Standalone.lib and object ..\..\..\product\VS2005\libs\\Standalone.exp
1>..\..\..\product\VS2005\libs\\Standalone.exe : fatal error LNK1169: one or more multiply defined symbols found

我使用相同的VS2005编译器编译了SDL2d.lib。我最初的想法是我对这些项目的运行时库设置不匹配。但是,在检查之后,它们都设置为“多线程调试”。

我刚刚注意到,上面的链接器输出似乎在制作Standalone.exe之前创建了Standalone.lib和Standalone.exp。我不知道为什么要制作一个.lib和.exp

还有其他原因会导致此错误吗?

谢谢

最佳答案

需要在SDL项目中定义HAVE_LIBC。这停止了​​_ftlused和_ftol2_sse的多重重新定义

关于c++ - SDL中已经定义了C++链接器错误LNK2005,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39252385/

10-13 00:08