在windows下编译 stlport 5.1.4
来源:互联网 发布:保险计划书制作软件 编辑:程序博客网 时间:2024/06/11 22:00
周海汉 /文
转载注明出处
stlport是对C++标准模板库的一个实现,遵循INTERNATIONAL STANDARD ISO/IEC 14882:1998(E) 和最新的ISO/IEC 14882:2003(E)标准。它的一个好处,就是提供了跨平台和跨编译器的实现。另外它还有一个易于使用的“安全模式”可以检测容器和迭代器的不正确用法。对于通用的功能也进行了优化。它的源代码比微软的实现也易于阅读。
但是stlport没有提供vc6和vc8的编译项目文件,而是提供了相应的各编译器的make file。这给windows下编译增加了一定困难。必须在命令行下用nmake来进行编译,以生成相应的lib文件。编译过程可以参考doc/README.msvc这个文件。这里以vc6编译为例。
首先,用命令行进到stlport的解压目录的build/lib目录,执行:
执行完毕,会提示用nmake /fmsvc.mak来编译。执行:
E:/cvs/vod/thirdparty/STLport-5.1.4/build/lib>nmake /fmsvc.mak
Microsoft (R) Program Maintenance Utility Version 7.00.8882
Copyright (C) Microsoft Corp 1988-2000. All rights reserved.
cl /nologo /W4 /GX /GR /Zm800 /MD /Zi /O2 /DWIN32 /D_WINDOWS /DNDEBUG
/I../../stlport /c /Foobj/vc6/shared/dll_main.o /Fdobj/vc6/shared/stlport.5.1.
pdb ../../src/dll_main.cpp
dll_main.cpp
D:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Include/./win
base.h(1576) : error C2733: second C linkage of overloaded function 'Interlocked
Increment' not allowed
D:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Inclu
de/./winbase.h(1574) : see declaration of 'InterlockedIncrement'
D:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Include/./win
base.h(1583) : error C2733: second C linkage of overloaded function 'Interlocked
Decrement' not allowed
D:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Inclu
de/./winbase.h(1581) : see declaration of 'InterlockedDecrement'
D:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Include/./win
base.h(1591) : error C2733: second C linkage of overloaded function 'Interlocked
Exchange' not allowed
D:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Inclu
de/./winbase.h(1588) : see declaration of 'InterlockedExchange'
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.
这是因为安装了plaform SDK引起的错误。这需要修改源码了。找到stlport/stl/config/user_config.h,打开,找到
#define _STLP_NEW_PLATFORM_SDK 1,将其注释去掉。修改后如下:
* boris : this setting is here as we cannot detect precense of new Platform SDK automatically
* If you are using new PSDK with VC++ 6.0 or lower,
* please define this to get correct prototypes for InterlockedXXX functions
*/
#define _STLP_NEW_PLATFORM_SDK 1
再执行nmake /fmsvc.mak,就会通过了。
接着执行nmake /fmsvc.mak install,会将相应的lib文件拷贝到bin目录。
如果找不到nmake,则需要安装环境变量。找到VC6安装目录,用命令行进入其VC98/Bin,执行vcvars32.bat,即可得到相应环境变量。
- 在windows下编译 stlport 5.1.4
- 在MinGW下编译STLport
- windows下用VC6.0和stlport 5.1.4编译log4cplus 1.02
- 如何在Debian下编译STLport
- 在VC6下编译和安装STLport
- STLport 在VS2010下的编译(转)
- 在windows下code-blocks stlport安装
- VC6 STLport-5.1.4 /STLport-4.6.2 编译,安装
- VC6 STLport-5.1.4 /STLport-4.6.2 编译,安装
- STLPort 5.2.1 在VC6下的编译注意事项
- boost和STLport在vs2010环境下的编译
- VC6 STLport-5.1.4 编译,安装
- [转]VC6 STLport-5.1.4 编译 安装
- VC6 STLport-5.1.4 编译,安装
- STLPort 5.1.5 编译
- windows xp上使用vc6编译STLport-5.1.0
- Windows下STLPort和ACE
- VC++2010下编译STLport,Boost
- Matplotlib安装指南(原文翻译)
- 参考,灵活数组成员,可变长结构体或者FAQ里下标为0的数组
- 利用Google Chart API直接制图表
- 新的开始,全新的开始
- SSL是如何工作的
- 在windows下编译 stlport 5.1.4
- 《检察日报》:我的博客我能做主吗?
- 外国一段代码解决windows
- wintab开发例程
- javascript内实现trim的方法
- 精灵进程(daemon)编程规则
- javascript实现Session类
- Javascript中得到中英文混合字符串的长度
- Windows Service Pack 拦截工具