VS编译log4cpp-v1.1.3

以你之姓@ 2022-03-29 09:21 287阅读 0赞

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

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

一 VS2008 & log4cpp-v1.1.3

1.1 问题描述

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dVOTc5Nw_size_16_color_FFFFFF_t_70

1.2 解决方案

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dVOTc5Nw_size_16_color_FFFFFF_t_70 1

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dVOTc5Nw_size_16_color_FFFFFF_t_70 2

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dVOTc5Nw_size_16_color_FFFFFF_t_70 3

  1. 再次编译,成功!

二 VS2013 & logcpp_v1.1.3

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

二 VS2015 & logcpp_v1.1.3

3.1 问题描述

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dVOTc5Nw_size_16_color_FFFFFF_t_70 4

3.2 解决方案

  1. log4cppsnprintf做了重新定义,但vs2015已自带snprintf函数。分析log4cpp中自带的snprintf.c,其中有如下代码片段(Line517 - Line523):
  2. /*
  3. * If the system does have snprintf and the portable routine is not
  4. * specifically required, this module produces no code for snprintf/vsnprintf.
  5. */
  6. #if !defined(HAVE_SNPRINTF) || defined(PREFER_PORTABLE_SNPRINTF)

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dVOTc5Nw_size_16_color_FFFFFF_t_70 5

再次编译,成功!

发表评论

表情:
评论列表 (有 0 条评论,287人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c++编译使用log4cplus

    > 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、log4cplus是什么? 二、使用步骤 1.下