博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在windows下编译 stlport 5.1.4
阅读量:2225 次
发布时间:2019-05-09

本文共 2365 字,大约阅读时间需要 7 分钟。

/文 

转载注明出处

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目录,执行:

configure -c msvc6

执行完毕,会提示用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,即可得到相应环境变量。

你可能感兴趣的文章
JAVA多线程之volatile 与 synchronized 的比较
查看>>
Java集合框架知识梳理
查看>>
笔试题(一)—— java基础
查看>>
Redis学习笔记(三)—— 使用redis客户端连接windows和linux下的redis并解决无法连接redis的问题
查看>>
Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
查看>>
Intellij IDEA使用(二)—— 在Intellij IDEA中配置JDK(SDK)
查看>>
Intellij IDEA使用(三)——在Intellij IDEA中配置Tomcat服务器
查看>>
Intellij IDEA使用(四)—— 使用Intellij IDEA创建静态的web(HTML)项目
查看>>
Intellij IDEA使用(五)—— Intellij IDEA在使用中的一些其他常用功能或常用配置收集
查看>>
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>