glog--介绍以及vs2010 vs2013 vs2015下编译
2016-11-24 19:26
381 查看
在程序员的世界里,谷歌的东西都是自带光环的。
在C++的世界里,尽管有很多成熟的、知名的log库,但我还是要跟你介绍一个google出品的log库,名为glog.
官网:
https://code.google.com/archive/p/google-glog/
github:
https://github.com/google/glog
The glog library implements application-level logging. This library provides logging APIs based on C++-style streams and various helper macros.
主要功能:
1, 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;
2, 严重性分级,根据日志严重性分级记录日志;
3, 可有条件地记录日志信息;
4, 条件中止程序。丰富的条件判定宏,可预设程序终止条件;
5, 异常信号处理。程序异常情况,可自定义异常处理过程;
6, 支持debug功能。可只用于debug模式;
7, 自定义日志信息;
8, 线程安全日志记录方式;
9, 系统级日志记录;
10, google perror风格日志信息;
11, 精简日志字符串信息。
glog在vs2010下编译
打开google-glog.sln
编译
成功
在Debug文件夹下就有我们想要的libglog.dll libglog.lib等我们想要的文件
glog在vs2013下编译
打开google-glog.sln
编译
错误:’min’不是std的成员
解决方法:
添加头文件
重新编译
成功
在Debug文件夹下就有我们想要的libglog.dll libglog.lib等我们想要的文件
glog在vs2015下编译
打开google-glog.sln
编译
错误1:’min’不是std的成员
解决方法:
添加头文件
错误2:warning C4005: “va_copy”: 宏重定义
解决方法:
修改文件port.h,117行改为:
错误3:
error C2084: 函数“int snprintf(char *const ,const size_t,const char *const ,…)”已有主体
c:\program files (x86)\windows kits\10\include\10.0.10150.0\ucrt\stdio.h(1932): note: 参见“snprintf”的前一个定义
解决方案:
修改snprintf的名字,比如改为snprintf_glog,记得所有的都要改
错误4:
d:\glog\glog-0.3.3\src\windows\glog\logging.h(1264): error C2280: “std::basic_ios
可能发生的错误:
Error 2 error LNK2005: “public: __thiscall std::_Container_base12::_Container_base12(void)” (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP120D.dll) D:\test\test_google_glog_vs2013\test_google_glog_vs2013\main.obj test_google_glog_vs2013
这个错误,是因为在编译库glog的时候,选择的代码生成方式和现在工程的代码生成方式不一样:
在C++的世界里,尽管有很多成熟的、知名的log库,但我还是要跟你介绍一个google出品的log库,名为glog.
官网:
https://code.google.com/archive/p/google-glog/
github:
https://github.com/google/glog
The glog library implements application-level logging. This library provides logging APIs based on C++-style streams and various helper macros.
主要功能:
1, 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;
2, 严重性分级,根据日志严重性分级记录日志;
3, 可有条件地记录日志信息;
4, 条件中止程序。丰富的条件判定宏,可预设程序终止条件;
5, 异常信号处理。程序异常情况,可自定义异常处理过程;
6, 支持debug功能。可只用于debug模式;
7, 自定义日志信息;
8, 线程安全日志记录方式;
9, 系统级日志记录;
10, google perror风格日志信息;
11, 精简日志字符串信息。
glog在vs2010下编译
打开google-glog.sln
编译
成功
在Debug文件夹下就有我们想要的libglog.dll libglog.lib等我们想要的文件
glog在vs2013下编译
打开google-glog.sln
编译
错误:’min’不是std的成员
解决方法:
添加头文件
#include<algorithm>
重新编译
成功
在Debug文件夹下就有我们想要的libglog.dll libglog.lib等我们想要的文件
glog在vs2015下编译
打开google-glog.sln
编译
错误1:’min’不是std的成员
解决方法:
添加头文件
#include<algorithm>
错误2:warning C4005: “va_copy”: 宏重定义
解决方法:
修改文件port.h,117行改为:
#undef va_copy #define va_copy(dst, src) (dst) = (src)
错误3:
error C2084: 函数“int snprintf(char *const ,const size_t,const char *const ,…)”已有主体
c:\program files (x86)\windows kits\10\include\10.0.10150.0\ucrt\stdio.h(1932): note: 参见“snprintf”的前一个定义
解决方案:
修改snprintf的名字,比如改为snprintf_glog,记得所有的都要改
错误4:
d:\glog\glog-0.3.3\src\windows\glog\logging.h(1264): error C2280: “std::basic_ios
#define GLOG_NO_ABBREVIATED_SEVERITIES #include <windows.h> #include "glog/logging.h" using namespace google; int main(int argc, char* argv[]) { google::InitGoogleLogging("test"); google::SetLogDestination(google::GLOG_INFO, "../Debug/logtestInfo"); google::SetLogDestination(google::GLOG_ERROR, "../Debug/logtestDebug");//不为ERROR建立日志文件 int num_cookies = 0; google::SetStderrLogging(google::GLOG_INFO); google::SetStderrLogging(google::GLOG_ERROR); //google::LogToStderr(); for (int i = 0; i < 100; ++i) { LOG(INFO) << "test google glog" << i << " cookies"; } google::ShutdownGoogleLogging(); }
可能发生的错误:
Error 2 error LNK2005: “public: __thiscall std::_Container_base12::_Container_base12(void)” (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP120D.dll) D:\test\test_google_glog_vs2013\test_google_glog_vs2013\main.obj test_google_glog_vs2013
这个错误,是因为在编译库glog的时候,选择的代码生成方式和现在工程的代码生成方式不一样:
相关文章推荐
- glog--介绍以及vs2010 vs2013 vs2015下编译
- window 安装glog 以及 vs 2010 vs 2015 编译出错解决汇总
- 【流媒體】live555—VS2010 /VS2013 下live555编译、使用及测试
- 【流媒體】live555—VS2010 /VS2013 下live555编译、使用及测试
- live555—VS2010/VS2013 下live555编译、使用及测试
- VS2015工程转换为VS2013、VS2012、VS2010工程方法汇总
- Visual Studio 的生成事件 (vs2010,vs2012,vs2013,vs2015)
- 【流媒体学习】live555学习(一):live555—VS2010 /VS2013 下live555编译、使用及测试
- VS2015 安装mvc4安装包以及vs2010 sp1后导致Razor语法失效代码不高亮(能正常运行)/视图页面无法智能提示(.cshtml)解决办法
- VS2010工程迁移到VS2013(或VS2015)遇到的SDL问题
- live555—VS2010/VS2013 下live555编译、使用及测试
- live555——VS2010 /VS2013 下live555编译、使用及测试
- VC++6.0 VS2005 VS2008 VS2010 VS2012 VS2013 编译 连接时候到底调用了那些东东
- vs2010中文旗舰版,vs2013,vs2015企业版激活秘钥
- VS2012编译运行VS2013的程序以及VS中运行C语言
- live555—VS2010 /VS2013 下live555编译、使用及测试
- 用vs2010编译vs2013建的工程
- Windows 10 下 VS2013 和 matlab2015b 编译 vlfeat-0.9.20 图文详细版
- vs2013(vs2015) 打开vs2010 找不到此项目类型所基于的应用程序 MVC2 升级 MVC5 不能加载Web项目
- VS2015编译Protobuf库以及使用