VS编译log4cpp-v1.1.3

记录各VS版本编译log4cpp-v1.1.3(Windows10系统下)遇到的问题及解决方案。

log4cpp主页链接:http://log4cpp.sourceforge.net/

 

一    VS2008 & log4cpp-v1.1.3

1.1  问题描述

        使用vs2008打开log4cpp中msvc7目录下的msvc7.sln,此时会自动进行项目升级,升级后尝试编译log4cpp项目,errors如下图:

 1.2  解决方案

        项目中已经包含了Localtime.hh和Localtime.cpp两个文件,在报错的DailyRollingFileAppender.cpp中包含Localtime.hh头文件。如下图:

        再次编译,此时报错如下图:

        打开log4cpp工程属性页,将【链接器-常规-输出文件 】更改为“<从父级或项目默认设置继承>”,然后将【连接器-高级-导入库】更改为“<从父级或项目默认设置继承>”。

       再次编译,成功! 

 

二  VS2013 & logcpp_v1.1.3

        使用vs2013打开log4cpp中msvc10目录下的msvc10.sln,此时会自动进行项目升级,升级后尝试编译log4cpp项目,很顺利,没有遇到错误。

 

二  VS2015 & logcpp_v1.1.3

3.1  问题描述

        使用vs2015打开log4cpp中msvc10目录下的msvc10.sln,此时会自动进行项目升级,升级后尝试编译log4cpp项目,errors如下图:

 

3.2  解决方案       

        log4cpp对snprintf做了重新定义,但vs2015已自带snprintf函数。分析log4cpp中自带的snprintf.c,其中有如下代码片段(Line517 - Line523):

/*
 * If the system does have snprintf and the portable routine is not
 * specifically required, this module produces no code for snprintf/vsnprintf.
 */
#if !defined(HAVE_SNPRINTF) || defined(PREFER_PORTABLE_SNPRINTF)

由代码及注释部分可知,若定义了 HAVE_SNPRINTF 宏,即可禁用这段代码。【项目属性 - C/C++ - 预处理器】中添加宏,如下图:

 再次编译,成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值