先说vs 2005编译STLport
stlport源代码,可以添加到vs2005,过程也很容易。
下载最新的STLport :
http://sourceforge.net/project/showfiles.php?group_id=146814&package_id=162032
我下的是5.1.5版本的。
解压到c盘,然后进入C:/Program Files/Microsoft Visual Studio 8/Common7/Tools
添加路径到vcvarsall.bat,就可以了,要添加include和lib。
刚下载的文件解压后,没有lib文件夹,没有关系,修改后的部分如下下划线区域:
@set PATH=C:/qt-win-commercial-src-4.3.1/bin;C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;C:/Program Files/Microsoft Visual Studio 8/VC/BIN;C:/Program Files/Microsoft Visual Studio 8/Common7/Tools;C:/Program Files/Microsoft Visual Studio 8/Common7/Tools/bin;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/bin;C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/bin;C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727;C:/Program Files/Microsoft Visual Studio 8/VC/VCPackages;%PATH%
@set INCLUDE=C:/STLport-5.1.3/STLport-5.1.3/stlport;C:/qt-win-commercial-src-4.3.1/include;C:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/INCLUDE;C:/Program Files/Microsoft Visual Studio 8/VC/INCLUDE;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include;C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/include;%INCLUDE%
@set LIB=C:/STLport-5.1.3/STLport-5.1.3/lib;C:/qt-win-commercial-src-4.3.1/lib;C:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/LIB;C:/Program Files/Microsoft Visual Studio 8/VC/LIB;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib;C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/lib;%LIB%
@set LIBPATH=C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727;C:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/LIB
开始编译,适用vs2005自带的命令行。
进入build路径的lib,先查看configure命令。
configure --help 可以看到相关的编译器的设置:
configure -c msvc8
下面就会提示相应的操作:
nmake /fmsvc.mak
接下来:
nmake /fmsvc.mak install
接下来把上面的标记部分添加到vs2005的vc目录路径,而且放在最上面,还不够,还要把bin里面的所有文件都复制到vc的bin文件夹目录下:
C:/Program Files/Microsoft Visual Studio 8/VC/bin
还有lib下C:/Program Files/Microsoft Visual Studio 8/VC/lib,不过我试过了,可以不复制。
到此就可以开始写一个程序,使用的就是stlport的库:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> a;
return 0;
}
对#include <vector>的vector右键,出现”打开文档vector”,就看到的是stl的vector文档。
如下:
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Copyright (c) 1996,1997
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* Permission to use or copy this software for any purpose is hereby granted
* without fee, provided the above notices are retained on all copies.
* Permission to modify the code and to distribute modified code is granted,
* provided the above notices are retained, and a notice that the code was
* modified is included with the above copyright notice.
*
*/
#ifndef _STLP_VECTOR
#define _STLP_VECTOR
# ifndef _STLP_OUTERMOST_HEADER_ID
# define _STLP_OUTERMOST_HEADER_ID 0x77
# include <stl/_prolog.h>
# endif
# ifdef _STLP_PRAGMA_ONCE
# pragma once
# endif
# ifndef _STLP_INTERNAL_ALGOBASE_H
# include <stl/_algobase.h>
# endif
#ifndef _STLP_INTERNAL_VECTOR_H
# include <stl/_vector.h>
#endif
……
2008编译stlport5.2.1的过程
1、解压到C:/STLport-5.2.1
2、添加路径后,打开vs2008的cmd的prompt,进入C:/STLport-5.2.1/STLport-5.2.1
3、configure msvc9
4、进入C:/STLport-5.2.1/STLport-5.2.1/build/lib
5、nmake -clean
6、nmake install
2012编译stlport5.2.1的过程
整个过程如上面2008的编译,stlport一直没有维护了,而且最大的VC++支持也是9,也就是2008,那么要支持2012编译,就要:
1、用“Developer Command Prompt for VS2012”打开cmd
2、修改文件“vim D:\StlPort\STLport-5.2.1\stlport\stl/_cstdlib.h”,我的放在d盘的,修嘎第158行,之前是:
inline _STLP_LONG_LONG abs(_STLP_LONG_LONG __x) { return __x < 0 ? -__x : __x; }
修改后:
# if !defined (__WATCOMC__) && \
(!defined (_STLP_MSVC_LIB) || (_STLP_MSVC_LIB < 1700) || defined (_STLP_USING_PLATFORM_SDK_COMPILER) || defined (UNDER_CE))
inline _STLP_LONG_LONG abs(_STLP_LONG_LONG __x) { return __x < 0 ? -__x : __x; }
# endif
然后执行2008的编译过程就是了,很快的,也没有问题的。
Visual Studio 2012是不支持设置系统的头文件和库文件的设置,但是我们有办法,如下打开或者新建一个工程,然后,在菜单栏里面--“View”--“Property Manager”,如下图:
最后,在运行的时候会报缺少stlportd.dll 该些文件在C:/STLport-5.2.1/STLport-5.2.1编成的bin里面,我的建议是直接添加系统路径,设置环境变量。