Win7_64位系统下,使用VS2010编译stlport库和Boost库

来源:互联网 发布:网络动漫制作公司 编辑:程序博客网 时间:2024/05/22 04:24
编译stlport


按照书上所说的,从http://sourceforge.net/projects/stlport/?source=pdlp下载stlport的源码
1.打开VS2010安装路径下的Visual Stdio Tools文件夹下的visual stdio 命令提示(2010)工具。
2.定位到configure.bat所在的路径: 执行cd F:\STLport\STLport-5.2.1
3.执行命令 configure  msvc9
4.执行命令cd buidl/lib
5. nmake clean install
但编译会出现错误,
E:\HaveFun\STLport\STLport.5.2.1\stlport\stl/_cstdlib.h(158): error C2084: func
tion '__int64 abs(__int64)' already has a body
       C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\../include/stdl
ib.h(471) : see previous definition of 'abs'
NMAKE : fatal error U1077: '"C:\ProgramFiles\Microsoft Visual Studio 10.0\VC\BI
N\cl.EXE"' : return code '0x2'
估计是STLport还没有支持2010的问题导致的,检查了以代码,和google了一下问题,将_cstdlib.h(158)代码修正为,
#if !defined(_STLP_MSVC) || (_STLP_MSVC < 1600)
inline _STLP_LONG_LONG  abs(_STLP_LONG_LONG __x) { return __x < 0? -__x : __x; }
#endif 
注意_STLP_MSVC 和 _MSC_VER 是一个东东,就是VC的版本号,上述就是添加了一对#if 和#endif语句。


这样就能成功编译了。




编译boost库
1.在boost安装路径下执行bootstrap命令,完成编译前的配置工作。
2.修改b2的配置文件:.\tools\build\v2下的user-config.jam, 在第74行去掉前面的注释#,启用STLport,并修改STLport的头文件路径和lib路径,修改如下:
"using stlport : : F:\STLport\STLport-5.2.1\stlport : F:\STLport\STLport-5.2.1\lib ;"
3.接下来完整编译boost库,执行命令
b2 --buildtype=conplete stdlib=stlport stage


VC中配置StLport和Boost库的路径


如果采用多线程。静态库连接、非Unicode的编译方式如下:
1.打开属性管理器,选择Debug|win32下的Microsoft.cpp.Win32.user  ,在Projects and Solutions的“VC++ Directories”页,选择“Include files”,加入“D:\STLport


\stlport” 和D:\boost,并调到最前面。选择Library files,加入D:\STLport\lib,并调到最前面。
2.打开菜单Project->Properties,在“Configration Propeities”的“General”页,设置“Character Set”为Not Set。
3.在“C/C++”的“Code Generation”页,选择“Runtime Library”为多线程(realease版为/MT,Debug版本为/MTD。
4.如果为Debug工程,则应该在Preprocessor页中定义宏“_STLP_DEBUG”和“_STL_DEBUG”以便使用STLport。

具体参见《Boost程序库完全开发指南》 罗剑锋著