使用STLport和第三方库共存产生LNK2005的错误解决方法
最近按照教程尝试播放ogg文件,但是发现ogg文件的载入比较慢。于是将考虑的重点放在标准STL里面了。由于买了一本Boost的书,里面讲到STLport是一个开源的软件库,并且比标准VS2005的STL的执行效率更高。于是我就抱着试一试的想法下载并且安装了STLport。安装的方法这里就不再赘述。这里着重讲一讲当STLport和第三方库(在我这里的情况是OggVorbis库)共存时产生的错误怎么解决。
安装完STLport后,我本以为它能够在不改动源代码的情况下进行顺利的编辑和连接。不料出现了一个严重的连接错误:LNK2005。如下图所示:
产生这样的错误真是让我一头雾水。怎么这么多的标准库都存在错误呢?这不应该成为问题啊。我疯狂了。冷静下来,分析问题的症结。首先我想到的就是我的项目的设置:是不是这个呢?
我尝试着将网上的“_STLP_USE_STATIC_LIB”字符输入至项目属性中,然后重新编译连接,结果还是这个结果。那么是不是其它的问题呢?我又对准了一个开关。
我将/MD和/MDd都调整成了/MT和/MTd(其中/MT代表Release版,/MTd代表Debug版)。然后重新编译连接,结果还是这样。我就度过了郁闷的一天。
晚上思考连接错误信息:“>LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library”,我就想找找/NODEFAULTLIB这个开关。今天一来就寻找。结果没有这个开关,而找到了这样一个/Zl开关: