Qt中undefined reference to报错的三种可能性和解决方法(以libgdal为例)
有一段代碼很久沒動(dòng)了,今天想跑起來編譯看看,突然發(fā)現(xiàn)出現(xiàn)一堆報(bào)錯(cuò),如下:
好吧,首先我能保證的是,有之前調(diào)試代碼過程中,這些報(bào)錯(cuò)一定是沒有出現(xiàn)的。最近也沒什么動(dòng)作,怎么就忽然就出現(xiàn)了。
不管怎么說,解決問題是關(guān)鍵。
單純這個(gè)報(bào)錯(cuò)內(nèi)容來看,很典型的undefined reference to的報(bào)錯(cuò),這個(gè)報(bào)錯(cuò)在調(diào)用第三方庫的編程中,簡直是家常便飯,代表的含義也很明確,就是找不到函數(shù)的定義。
用C++寫代碼的都知道,在C++中,代碼是分為聲明和定義的,聲明就是告訴編譯器有這個(gè)函數(shù),換言之,就是個(gè)名字,而定義,就是具體這個(gè)函數(shù)的實(shí)現(xiàn)內(nèi)容。
類似這個(gè)報(bào)錯(cuò)的,還會(huì)有一種報(bào)錯(cuò)是undeclared的報(bào)錯(cuò),這大概就是函數(shù)聲明的報(bào)錯(cuò)。
言歸正傳,undefined reference to的報(bào)錯(cuò)一般怎么處理
當(dāng)發(fā)現(xiàn)上述兩點(diǎn)都不是原因之后,說明從這里能獲取的報(bào)錯(cuò)信息就不足以解決這個(gè)問題了,于是,這個(gè)時(shí)候,就把目光轉(zhuǎn)移到編譯輸出的那個(gè)tab頁中,查找蛛絲馬跡。然后就發(fā)現(xiàn)了問題的關(guān)鍵。在編譯輸出的內(nèi)容中,有這樣的報(bào)錯(cuò)
問題就明顯了,缺少了很多的libgdal的依賴庫,這個(gè)就讓我很摸不著頭腦了,明明之前沒有這些報(bào)錯(cuò),說明依賴都沒問題的,怎么突然就出現(xiàn)問題了。我認(rèn)真回憶了一下,懷疑可能是在卸載別的軟件的時(shí)候,利用sudo apt autoremove時(shí),把一些依賴給誤刪了。
問題是很好解決的,就是把缺的依賴再給他裝上去就好了,特別提醒一下,別的依賴都好找,直接sudo apt install XXXXX多試幾回,基本也就找到了,這其中有兩個(gè)庫不是很好找,libmfhdfalt和libdfalt,這兩個(gè)庫需要安裝libhdf4-alt-dev來解決。
那么總結(jié)一下,出現(xiàn)undefined reference to報(bào)錯(cuò)的可能原因有三條:
總結(jié)
以上是生活随笔為你收集整理的Qt中undefined reference to报错的三种可能性和解决方法(以libgdal为例)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建设银行安徽分行副行长王文兵:金融科技赋
- 下一篇: 【EXLIBRIS】#小词旮旯# 004