Google-GLog編譯以及使用

心血來潮要去看開源代碼,看到公司的日誌庫是在google-glog開源庫上二次封裝的,那就先擼glog吧.ios

 

1. 下載源碼 git

  一條命令取源碼:git clone github.com/google/gloggithub

 

2. 編譯庫文件編程

  雙擊打開,右鍵編譯,看到succeed,心情還不錯~測試

          

 

3. 其餘工程調用搜索引擎

  a. 建工程google

    

  b. 拷貝頭文件spa

    

   

  c. 放置lib文件3d

    

 

  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的幫助, 編程之路一我的獨行確實很難走下去,每次爆出一籌莫展的錯誤,老是讓人很迷茫.
有些經驗並非搜索引擎能搜的到的. 樂於助人樂於分享的大牛們,都是個人榜樣. 
相關文章
相關標籤/搜索