VS2015编译GDAL库出现宏重复定义-fatal error C1189

2 篇文章 0 订阅
1 篇文章 0 订阅

在使用GDAL库版本1.9.1时,用VS2015编译出现了如下问题:

“fatal error C1189: #error: Macro definition of snprintf conflicts
with Standard Library function declaration”

可以在StackOverflow上找到对应问题:
VS 2015 compiling cocos2d-x 3.3 error “fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration”

提出的方法是,你得找到写有这个宏定义的头文件:

#define snprintf _snprintf

那么多头文件,不知道哪个里写了这句话,后来看了GDAL这个更新记录GDAL更新记录
终于发现这个宏定义在cpl_config.h中可以找到,将上面那段代码替换成下列代码就可以通过编译了:

#if defined(_MSC_VER) && (_MSC_VER < 1900)
#  define snprintf _snprintf
#endif

这里_MSC_VER表示的是VS版本,1900对应VS2015,snprintf这个函数在VS2015中已经有了官方支持,所以原来的写法会重复定义。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值