编译STLPort

首先下载最新版本的STLport, 目前最新的版本号是5.2.1,更新日期为2013年5月,从官网上的介绍来看,貌似STLport已经停止更新了(?)。

http://sourceforge.net/projects/stlport/


下载完成之后,将STLPort解压缩到任意路径下,通过visual studio的Command Prompt打开命令行,进入%STLPort%的根目录下,敲入

configure.bat msvc9

注意,由于STLPort已经很久没有更新了,因此,目前只支持到visual studio 2008。因此就只能用msvc9了。命令执行结束之后。进入build\lib、目录下,敲入

nmake clean install

开始编译。可惜好戏不长,一开始编译出错了。如下:

STLport-5.2.1\stlport\stl/_cstdlib.h(158) : error C2084: function '__int64 abs(__int64)' already has a body C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE../include/stdlib.h(488) : see previous definition of 'abs'

啊,是不是要吐血。没办法,打开_cstdlib.h,到157行 把

#else

修改成

#elif !defined(_STLP_MSVC) || (_STLP_MSVC < 1600)

修改完成之后,再次敲入nmake clean install。稍等片刻,编译成功。


另外,如果是在visual studio 2013中引用STLPort的话,肯定还会遇到下面这个问题:

stlport-5.2.1\stlport\stl_cmath.h(498): error C2084: function 'float hypot(float,float) throw()' already has a body stlport-5.2.1\stlport\stl_cmath.h(499): error C2084: function 'long double hypot(long double,long double) throw()' already has a body

解决这个编译问题的方法和上面一样,在_cmake.h中,修改:

_STLP_MATH_INLINE2XX(float, hypot, hypot) inline long double hypot(long double x, long double y) { return sqrt(x * x + y * y); }

改成

# if !defined(_STLP_MSVC) || (_STLP_MSVC < 1800) _STLP_MATH_INLINE2XX(float, hypot, hypot) inline long double hypot(long double x, long double y) { return sqrt(x * x + y * y); } # endif

这样,这个编译错误就能够解决。

转载于:https://my.oschina.net/imeteora/blog/277896

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值