疑難雜症-呼叫第三方庫
阿新 • • 發佈:2019-01-28
這兩天在專案工程中引入了一個新的第三方庫。將這個第三方庫呼叫寫在我的一個public庫中,生成一個靜態庫,然後由程式呼叫靜態庫來引用到第三方庫。
問題一:
編譯過程中遇到了一個小問題,找不到第三方庫的連結。小菜一碟,這個問題肯定是在連結過程中出現的,那麼不可能是編譯public的時候的問題,肯定是工程最後連結的時候報的,於是我直接去看工程的make,果然,呼叫的庫名稱不帶版本號:-lxxx,於是將第三方庫拷貝了一個無版本號的,問題解決。
問題二:
接下來遇到了真麻煩。執行程式的時候直接崩潰了!而且不是在新開發的程式部分,歷史程式碼,也是呼叫第三方庫的部分。。。瞬間蛋碎,這tm是什麼情況。(不過遇到這樣的問題千萬不要慌,這種見鬼的問題肯定有辦法,一點一點排除解決)問題肯定是新開發的程式,於是我一點一點的註釋掉程式,最後發現第三方庫的標頭檔案是直接導致這個問題的根本原因,但什麼原因呢,猜不透。
晚上在家洗澡的時候,猜。。猜。。猜。。難道是連結衝突了,和其他的第三方庫有比較相似的定義?(學藝不精呀,只能靠蒙,不過很多時候我都能蒙對,感覺有第六感一樣)。第二天一大早(雖然是週六,在家蹲不住)到了公司,我將呼叫的程式封裝到一個類裡,給他一個名稱空間,標頭檔案中不引用第三方庫,將想要的結果string返回出來,儘可能少的讓第三方庫暴露在程式中。果然試驗通過。但是最後我也不知道什麼原因,只是記住了一點,第三方庫的引入,一定要儘可能的封裝,儘可能少的將其釋放到程式中。