VS2017编译配置和使用LOG4CPP
1.环境
(1)Windows7 64bit
(2)VS2017
(3)log4cpp-1.1.3.tar.gz
2.编译
参考:http://www.jiazi.cn/blog/?id=55
解压log4cpp-1.1.3.tar.gz 得到log4cpp文件夹
该版本指供了msvc6,msvc7(2003),msvc10(2010)的编译解决方案,其它编译解决方案可以从中选择一个进行调整。
选择msvc10,复制并粘贴到 log4cpp文件夹,重命名为msvc2017
cd msvc2017
open the msvc2010.sln解决方案
点OK,按要求升级
point1:
在右侧项目中serach:NTEventLogCategories.mc 右键打开属性:修改Command Line。
原:
"$(VS100COMNTOOLS)vsvars32.bat"
if not exist $(OutDir) md $(OutDir)
mc.exe -h "$(OutDir)" -r "$(OutDir)" "$(ProjectDir)..\%(Filename).mc"
rc.exe -r -fo "$(OutDir)%(Filename).res" "$(OutDir)%(Filename).rc"
link.exe /MACHINE:IX86 -dll -noentry -out:"$(OutDir)NTEventLogAppender.dll" "$(OutDir)%(Filename).res"
后:
if not exist $(OutDir) md $(OutDir)
mc.exe -h "$(OutDir)\" -r "$(OutDir)\" "$(ProjectDir)..\%(Filename).mc"
rc.exe -r -fo "$(OutDir)%(Filename).res" "$(OutDir)%(Filename).rc"
link.exe /MACHINE:IX86 -dll -noentry -out:"$(OutDir)NTEventLogAppender.dll" "$(OutDir)%(Filename).res"
point2:sprintf被重定义,所以用宏去关掉
参考:https://www.cnblogs.com/happyamyhope/p/6872485.html
配置项目XXX属性-C/C++预处理器--添加HAVE_SNPRINTF
point3:
查看log4cpp的运行库选项:配置项目XXX属性---C/C++--代码生成---运行库。。。。
在使用log4cpp的工程中药保持一致!!!!!
point4:!!!!
参考https://blog.csdn.net/huguohu2006/article/details/8486817
根据运行库配置忽略相关的库:配置项目XXX属性--LINK--输入---忽略特定的库---
下表显示根据要使用的运行时库应忽略的库。
若要使用第一行运行时库 请忽略第2行的这些库
单线程 (libc.lib)
libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
多线程 (libcmt.lib)
libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
使用 DLL 的多线程 (msvcrt.lib)
libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
调试单线程 (libcd.lib)
libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib
调试多线程 (libcmtd.lib)
libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib
使用 DLL 的调试多线程 (msvcrtd.lib)
libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib
然后编译就OK了。
注意:右侧项目中有多个解决方案,如log4cpp是共享库、log4cppLIB是静态库,还有一些测试用例,可以不用管。每个都可以邮件单独
生成解决方案
3.配置
4.测试
参考:https://www.cnblogs.com/happyamyhope/p/6872485.html
配置环境变量:主要是为类LINK 库和头文件
#include "pch.h"
#include <iostream>
#include <log4cpp/Category.hh>
#include <log4cpp/Appender.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/Priority.hh>
#include <log4cpp/PatternLayout.hh>
#include <log4cpp/RollingFileAppender.hh>
using namespace std;
int main(int argc, char* argv[])
{
log4cpp::PatternLayout* pLayout1 = new log4cpp::PatternLayout();//创建一个Layout;
pLayout1->setConversionPattern("%d: %p %c %x: %m%n");//指定布局格式;
log4cpp::PatternLayout* pLayout2 = new log4cpp::PatternLayout();
pLayout2->setConversionPattern("%d: %p %c %x: %m%n");
log4cpp::Appender* fileAppender = new log4cpp::FileAppender("fileAppender", "wxb.log");//创建一个Appender;
fileAppender->setLayout(pLayout1);//将指定的Layout添加到Appender;
log4cpp::RollingFileAppender* rollfileAppender = new log4cpp::RollingFileAppender(
"rollfileAppender", "rollwxb.log", 5 * 1024, 1);
rollfileAppender->setLayout(pLayout2);
log4cpp::Category& root = log4cpp::Category::getRoot().getInstance("RootName");//从系统中得到Category的根;
root.addAppender(fileAppender);//将Appender添加到Category;
root.addAppender(rollfileAppender);
root.setPriority(log4cpp::Priority::DEBUG);//设置Category的优先级;
//开始记录日志;
for (int i = 0; i < 100; i++)
{
string strError;
ostringstream oss;
oss << i << ":Root Error Message!";
strError = oss.str();
root.error(strError);
}
log4cpp::Category::shutdown();//关闭Category;
return 0;
}
在工程文件中就可以找到日志文件wxb.log:
2019-07-24 15:12:07,837: ERROR RootName : 0:Root Error Message!
2019-07-24 15:12:07,838: ERROR RootName : 1:Root Error Message!
2019-07-24 15:12:07,838: ERROR RootName : 2:Root Error Message!
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2019-07-24 15:12:07,838: ERROR RootName : 99:Root Error Message!
2019-07-24 15:12:07,838: ERROR RootName : 100:Root Error Message!
VS2017编译配置和使用LOG4CPP相关推荐
- win10+VS2017编译配置boost_1_78_0
1.编译boost库 1.1下载boost 下载官网地址:boost_1_78_0 注意,有时候会下载不全,下载之后检查一下 如果下载不完全,编译不能通过 1.2 解压 解压,一定要解压到一个指定文件 ...
- 基于VS2017编译配置GDAL教程
源代码下载 git clone https://github.com/OSGeo/gdal.git PROJ安装配置 GDAL3.0以上版本必须依赖于PROJ库(6.0以上版本),因此需要在编译前安装 ...
- 使用VS2017编译sqlite和在VS2017中配置使用sqlite的简单例子演示
转自:http://blog.csdn.net/hyxiaohaiyang/article/details/7382551 知识补充: sqlite3.dll动态链接库,它允许程序共享执行特殊任务所必 ...
- Windows10上使用VS2017编译MXNet源码操作步骤(C++)
MXNet是一种开源的深度学习框架,核心代码是由C++实现.MXNet官网推荐使用VS2015或VS2017编译,因为源码中使用了一些C++14的特性,VS2013是不支持的.这里通过VS2017编译 ...
- windows 平台使用 VS2017 编译 libevent 源码
一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...
- vs2017运行显示系统找不到指定的文件_windows 平台使用 VS2017 编译 libevent 源码
一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...
- vs2017运行yolov4_YOLOv4 C vs2017 编译
目录 先感谢yolov4的贡献者们 1.下载darknet源码 2.安装好CUDA.CUDNN和opencv CUDA:10.0 CUDNN:7.4.1 opencv:3.4.2 或者4.3.0版本都 ...
- win10 VS2017编译Audacity详细教程
win10 VS2017编译Audacity详细教程 安装Visual Studio2017和git,这里不详细叙述,网上很多教程. 配置wxWidgets a.官网下载地址http://www.wx ...
- 解读帖子:结构化编译器前端 Clang 介绍(VS2017编译clang)
因为需要提取出头文件或源文件的函数名列表和相应的函数参数类型,我想从已有的编译器中寻找函数调用,于是我找到了--结构化编译器前端 Clang 介绍 这个贴子折腾了我很久(还有几个开源项目我也没有搞定) ...
- vs2017编译iconv
本人目前在windows下使用ffmpeg,需要添加fontconfig,而fontconfig依赖iconv:故而需要用vs2017编译iconv静态库,64位版本. 本人参考了博客:windows ...
最新文章
- 3116 高精度练习之加法
- 新建django项目
- 02-Popover代码实现
- Vue.js使用-http请求
- 论文浅尝 - CIKM2021 | DT-GCN: 一种双曲空间中的数据类型感知的知识图谱表示学习模型...
- 三周第三次课(12月27日)
- 入住博客园,小庆一下
- 麻省理工18年春软件构造课程阅读13“调试”
- 【BMC】Redfish简述
- 从Conficker蠕虫看AD帐号锁定
- Android音视频视频基础(H264)二 SPS分析
- 【K8S实战】-超详细教程(二)
- 在自己电脑上建立SVN服务器
- Jackson,Gson,Fastjson 的对比
- Azure机器学习入门(三)创建Azure机器学习实验
- php ziparchive(),PHP: ZipArchive - Manual
- 浅谈TEDS智能传感器
- 教你如何查看附近的WiFi密码
- SIMCA-P计算变量投影重要性分析值(VIP)_偏最小二乘
- RK3588s imx415相机适配及ISP调优系列(一)