Google-GLog编译以及使用
心血來(lái)潮要去看開(kāi)源代碼,看到公司的日志庫(kù)是在google-glog開(kāi)源庫(kù)上二次封裝的,那就先擼glog吧.
?
1.?下載源碼?
一條命令取源碼:git clone?github.com/google/glog
?
2.?編譯庫(kù)文件
雙擊打開(kāi),右鍵編譯,看到succeed,心情還不錯(cuò)~
? ? ? ? ??
?
3.?其他工程調(diào)用
a.?建工程
b.?拷貝頭文件
c.?放置lib文件
?
d.?放置dll文件
e. TestDemo工程配置
配置一:
配置二:
配置三:
f.?運(yùn)行
g.?一臉懵逼
?
h.?結(jié)論
?? ? ?洗洗睡吧 !
?
?
?編譯使用第二發(fā)
1. 痛定思痛,痛何如哉?
2.?原因分析
簡(jiǎn)單的調(diào)用都出問(wèn)題,不爽,看源碼。
?
我的Demo調(diào)用了這個(gè)宏來(lái)輸出
?
? 接著找到這個(gè)宏
?
調(diào)用了非C++基礎(chǔ)庫(kù)文件。問(wèn)題找到。 原因在于,dll庫(kù)文件在編譯的時(shí)候,調(diào)用了非基礎(chǔ)庫(kù)的類。這個(gè)類在每個(gè)不同的編譯器上實(shí)現(xiàn)可能都不同,因此,用VS2008編譯,用VS2013調(diào)用會(huì)出問(wèn)題, 問(wèn)題表現(xiàn)為指針錯(cuò)誤。 并且靜態(tài)庫(kù)一定要編譯器版本號(hào)對(duì)應(yīng)。 解決方案也很簡(jiǎn)單,VS2013編譯庫(kù)文件---->VS2013調(diào)用 VS2008編譯庫(kù)文件---->VS2008調(diào)用?
3.?糾正錯(cuò)誤
改用VS2013編譯的庫(kù),問(wèn)題解決
?
4.?學(xué)到的東西
a. 庫(kù)文件調(diào)用,產(chǎn)生異常的內(nèi)存讀取錯(cuò)誤等等...為庫(kù)文件版本問(wèn)題。 b. 通用的庫(kù)文件,動(dòng)態(tài)庫(kù),必須使用C++基本數(shù)據(jù)類型編譯才可通用。 c. 靜態(tài)庫(kù)一定需要編譯器版本相同。 d. 靜態(tài)庫(kù)版本錯(cuò)誤會(huì)導(dǎo)致各種鏈接錯(cuò)誤。 ? ? ? ? ??? e. 本機(jī)編譯的dll文件,在調(diào)用的時(shí)候可以直接連接到源文件,比較好調(diào)試 測(cè)試代碼: 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. 最后總結(jié) 老感覺(jué)少寫了點(diǎn)啥, 非常感謝同事WJ的幫助, 編程之路一個(gè)人獨(dú)行確實(shí)很難走下去,每次爆出束手無(wú)策的錯(cuò)誤,總是讓人很迷茫. 有些經(jīng)驗(yàn)并不是搜索引擎能搜的到的. 樂(lè)于助人樂(lè)于分享的大牛們,都是我的榜樣.?轉(zhuǎn)載于:https://www.cnblogs.com/ccccnzb/p/6150496.html
總結(jié)
以上是生活随笔為你收集整理的Google-GLog编译以及使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++ primer 详解(第三章)
- 下一篇: 今年想在哈尔滨报班学雅思,价钱不贵而且能