MapServer5.6.1编译手记

今日看到MapServer已经更新到了5.6.1,我目前还在使用5.4.2版本,看了一下变动不少,增加了很多新功能,像opengl渲染,xml格式的mapfile。还修改了不少bug,我以前说到的symbolObj.inmapfile问题也在5.6.1中得到了解决。

 

 

如此多的变动很吸引人,于是决定下载代码编译一份看看。

因为以前编译过5.4.2,因此所有的依赖库都在,直接把5.6.1代码扔到了原来的编译目录之下,按照以前的经验,修改了nmake.opt文件中的几个常用参数之后就开始编译了。(具体的编译步骤可以看看makefile.vc以及nnake.opt文件,网上也有很多介绍,这里不做说明)

 

 

很不幸的是出现了编译错误如下:

d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2601) : error C2054:

 在“inline”之后应输入“(

d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2601) : error C2085:

 msBufferInit: 不在形参表中

d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2602) : error C2061:

 语法错误 : 标识符“inline

d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2603) : error C2370:

 inline: 重定义;不同的存储类

        d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2601) : 参见

inline”的声明

d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2603) : error C2054:

 在“inline”之后应输入“(

d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2603) : error C2085:

 msBufferFree: 不在形参表中

d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2604) : error C2082:

 形参“inline”的重定义

d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2604) : error C2143:

 语法错误 : 缺少“;(在“类型”的前面)

d:/work/mapserver-buildkit-2008/mapserver-5.6.1/mapserver.h(2604) : error C2085:

 msBufferAppend: 不在形参表中

mapbits.c(35) : error C2085: ms_cvsid: 不在形参表中

mapbits.c(35) : error C2143: 语法错误 : 缺少“;(在“=”的前面)

mapbits.c(35) : error C2065: ms_cvsid: 未声明的标识符

mapbits.c(35) : warning C4047: :: char *”与“int”的间接级别不同

NMAKE : fatal error U1077: “"d:/Program Files/Microsoft Visual Studio 9.0/VC/BI

N/cl.EXE": 返回代码“0x2

Stop.

 

开始怀疑是编译器的错误,本来是用的编译器版本是.vs2008,更换为vs2003之后错误依然存在,仔细看了一下错误信息,找到了mapserver.h文件中的2601行:

 

 

inline void msBufferInit(bufferObj *buffer);

inline void msBufferResize(bufferObj *buffer, size_t target_size);

 

 

按照编译错误的提示来看应该是编译器没有识别inline参数。查阅了一下inlinec++里面的东西,在c里面使用是会发生错误。

解决办法就是将inline修改为__inline或者在mapserver.h中增加了如下的定义:

#define inline __inline

   

做了如此修改之后顺利地编译通过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值