這兩天在專案工程中引入了乙個新的第三方庫。將這個第三方庫呼叫寫在我的乙個public庫中,生成乙個靜態庫,然後由程式呼叫靜態庫來引用到第三方庫。
問題一:
編譯過程中遇到了乙個小問題,找不到第三方庫的鏈結。小菜一碟,這個問題肯定是在鏈結過程中出現的,那麼不可能是編譯public的時候的問題,肯定是工程最後鏈結的時候報的,於是我直接去看工程的make,果然,呼叫的庫名稱不帶版本號:-l***,於是將第三方庫拷貝了乙個無版本號的,問題解決。
問題二:
接下來遇到了真麻煩。執行程式的時候直接崩潰了!而且不是在新開發的程式部分,歷史**,也是呼叫第三方庫的部分。。。瞬間蛋碎,這tm是什麼情況。(不過遇到這樣的問題千萬不要慌,這種見鬼的問題肯定有辦法,一點一點排除解決)問題肯定是新開發的程式,於是我一點一點的注釋掉程式,最後發現第三方庫的標頭檔案是直接導致這個問題的根本原因,但什麼原因呢,猜不透。
晚上在家洗澡的時候,猜。。猜。。猜。。難道是鏈結衝突了,和其他的第三方庫有比較相似的定義?(學藝不精呀,只能靠蒙,不過很多時候我都能蒙對,感覺有第六感一樣)。第二天一大早(雖然是週六,在家蹲不住)到了公司,我將呼叫的程式封裝到乙個類裡,給他乙個命名空間,標頭檔案中不引用第三方庫,將想要的結果string返回出來,盡可能少的讓第三方庫暴露在程式中。果然試驗通過。但是最後我也不知道什麼原因,只是記住了一點,第三方庫的引入,一定要盡可能的封裝,盡可能少的將其釋放到程式中。
android呼叫第三方庫
把第三方so放在新建的libs armeabi 中 因為android.mk檔案中的當前目錄跳到local path call my dir 即jni下,所以這個libs armeabi必須在jni下 android.mk local path call my dir warning local p...
Qt 呼叫第三方庫
一 製作動態庫c 動態庫 c 生成dll,專案名稱mydll 件 ifndef mdll h define mdll h ifdef mylibdll define mylibdll extern c declspec dllimport else define mylibdll extern c ...
swift呼叫第三方oc庫
對於第三方專案的依賴,一開始我打算用cocoapods,但是過程曲折,最後一直報 objc view plain copy print font size 14px ld 21 8duplicate symbols forarchitecture i38 6clang error linker co...