zoukankan      html  css  js  c++  java
  • Google-GLog编译以及使用

    心血来潮要去看开源代码,看到公司的日志库是在google-glog开源库上二次封装的,那就先撸glog吧.

    1. 下载源码 

      一条命令取源码:git clone github.com/google/glog

    2. 编译库文件

      双击打开,右键编译,看到succeed,心情还不错~

              

    3. 其他工程调用

      a. 建工程

        

      b. 拷贝头文件

        

       

      c. 放置lib文件

        

      d. 放置dll文件

        

      

      e.  TestDemo工程配置

      配置一:

        

      配置二:

        

      

      配置三:

        

      

      f. 运行

        

      

      g. 一脸懵逼

        

      h. 结论

            洗洗睡吧 !

     编译使用第二发

      1. 痛定思痛,痛何如哉?

      2. 原因分析

        简单的调用都出问题,不爽,看源码。

        我的Demo调用了这个宏来输出

        

         接着找到这个宏

        

        

       

        调用了非C++基础库文件。问题找到。
        原因在于,dll库文件在编译的时候,调用了非基础库的类。这个类在每个不同的编译器上实现可能都不同,因此,用VS2008编译,用VS2013调用会出问题, 问题表现为指针错误。
        并且静态库一定要编译器版本号对应。
        解决方案也很简单,VS2013编译库文件---->VS2013调用 VS2008编译库文件---->VS2008调用

       

      3. 纠正错误

        改用VS2013编译的库,问题解决

        

        

        

      4. 学到的东西

         a. 库文件调用,产生异常的内存读取错误等等...为库文件版本问题。
                b. 通用的库文件,动态库,必须使用C++基本数据类型编译才可通用。
                c. 静态库一定需要编译器版本相同。
                d. 静态库版本错误会导致各种链接错误。
                e. 本机编译的dll文件,在调用的时候可以直接连接到源文件,比较好调试
     
        测试代码:
     1 #include <iostream>
     2 
     3 #include "glog/logging.h"
     4 
     5 int main()
     6 {
     7      google::InitGoogleLogging("log");
     8      google::SetLogDestination(google::GLOG_INFO, "./myinfo");
     9      LOG(INFO)       << "嘿嘿...";
    10      LOG(WARNING)    << "呵呵...";
    11      LOG(ERROR)      << "嘻嘻...";
    12      LOG(FATAL)      << "哈哈...";
    13      LOG(INFO)       << "嘤嘤...";
    14 
    15      return 0;
    16 }
       5. 最后总结
        老感觉少写了点啥, 非常感谢同事WJ的帮助, 编程之路一个人独行确实很难走下去,每次爆出束手无策的错误,总是让人很迷茫.
    有些经验并不是搜索引擎能搜的到的. 乐于助人乐于分享的大牛们,都是我的榜样. 
     
  • 相关阅读:
    如何保证你的路由器安全?
    Jmeter、fiddler、postman 如何模拟ajax请求
    U盘快速格式化和普通格式化有什么区别
    Layui button disabled
    TP连接数据库字符串方式
    Warning: require(D:wamp64wwwxxxpublic/../thinkphp/start.php): failed to open stream: No such file or directory in D:wamp64www xxx publicindex.php on line 17
    [AWS] EC2
    [AWS] EC2
    [AWS] EC2
    [AWS DA
  • 原文地址:https://www.cnblogs.com/ccccnzb/p/6150496.html
Copyright © 2011-2022 走看看