原文链接:http://hi.baidu.com/miaow%5Fhome/blog/item/bdbead382f937bc4d462253e.html
首先,要知道一个重要的概念,没有官方的C++编译器,也没有官方的C++ STLPort。我们总认为官方的东西最可靠,C++的官方,也就是ISO委员会,没有发表过任何编译器和库的实体,官方只负责指定标准。定标准比实现要麻烦很多,我是这么认为的。
也就是说,根本没有所谓的官方的C++编译器的STL的存在(我用了好多的“的”),所有的编译器和STL都是由厂商自己实现。目前最好的C++编译器应该就是gcc和intel C++了吧,而大家最为认可的STL库就是SGI了。不过SGI专门为UNIX实现,移植有些困难,所有就有了STLPort这个SGI的多编译器移植版。
到现在为止,STLPort的最新版本是STLport-5.1.5,大家可以在www.stlport.org下载最新版的STLPort。概念中电脑上很多东西都要安装(编译)的,网上一查,结果倒是很多,大多都不知所云,又是命令行,又是环境变量的,很多人在这一步就被挡住的。
本文以%STLPort%代表STLPort的解压目录,讲解STLPort的安装与使用。
STLPort完全可以不安装(编译)就用,除非你要用其提供的iostream代替编译器自己的iostream。%STLPort%\stlport\stl\config\user_config.h文件里面有个“#define _STLP_NO_IOSTREAMS 1”被注释掉了,取消注释,这样就说明我们不使用其提供的STLPort而使用编译器自己的iostream,这样就无需安装(编译)了。
不安装(编译)的用法(推荐):其实包涵%STLPort%\stlport文件夹的头文件就可以了,想用哪个就包涵哪个,和一般代码一样的使用,这是最简单的用法。当然,你要在VC中设置默认include路径,要把“%STLPort%\stlport”放在最前,这样你就可以使用直接#include <XXX>包涵而不用一大串的路径了。比如说你要用vector,使用#include <vector>就好,VC会把STLPort的vector包涵进去,而不是VC原本的vector。如此,你已经完成了用STLPort代替VC原本的STL的工作了。
安装(编译)的用法:说实话,我不知道这种方法有任何优势,挺麻烦的,呵呵。以VC6为例,具体过程如下:
1.运行VC安装目录下VC98的VC98\bin中运行vcvars32.bat。
2.到%STLPort%\build\lib\下,在命令提示符下执行configure.bat -c msvc6。其他版本的vc也差不多,比如vc7就是msvc7,哈哈。
3.执行nmake /fmsvc.mak install开始编译。
4.编译结束后,将bin\目录下的三个*.dll文件拷贝到windows\system32\目录下。
5.设置%STLPort%目录下的\include\和\lib\目录到VC的默认include和lib路径之中。
最后注意,STLPort在控制台程序中使用时要更改运行时库为多线程库,否侧编译通不过。
2008-8-3
GhostMiaow