QT編譯執行報錯資訊和解決方法

2021-10-25 06:24:17 字數 1114 閱讀 9951

本文記錄日常工作中使用qt creator開發時遇到的報錯,以及解決辦法,因同乙個報錯可能的原因很多,這裡只是部分解決思路。

報錯**:domelem = & (node.toelement());node為形參引用,報錯大意是對臨時變數取位址,返回後臨時變數消失導致位址失效,使用非const引用引用返回的臨時變數位址是確實不被允許的,但是在vs2013環境不報錯,原因是這是vs2013的非標準擴充套件(預設開啟,可關閉),自動在多種情況下擴充套件了被引用物件的生命週期;

mgw解決方案,定義乙個臨時變數做過度:

qdomelement t_qdomelement ;

t_qdomelement = node.

toelement()

;domelem =

&t_qdomelement ;

重定義錯誤,造成這個錯誤的原因很多,這次遇到的是重複定義的類在pro檔案被多次包含。

1、結構體定義問題,名字前面加了coreshared_export,去掉;

2、庫引用錯誤,mgw用的庫也必須是mgw編譯的,重新編譯依賴庫,注意mgw編譯庫是.a,不是.lib,pro檔案需要包含 libs += $$libpath/libbase.a

3、pro檔案加 libs += -l . -l ws2_32

4、看下類所在的h和cpp檔案是否包含在pro檔案裡,或者是否被條件遮蔽

1、變數名前加命名空間::

2、定義的函式要在呼叫前宣告,或者寫在呼叫前面

c++不允許臨時物件被修改或者重新賦值,所以對臨時物件的引用必須是const型別,解決方法,刪掉&引用符號,或在變數前加const;

pro檔案加libs +=-lmswsock;

宣告模板中依賴名是型別名,前面加typename

debug編譯正常,執行時崩潰,報錯資訊「程式異常結束」,在main.cpp打斷點,也會報「the cdb process terminated」;

排查中發現release版可以正常執行,debug版執行崩潰,初步判斷是依賴庫有問題,檢視pro檔案,debug模式下呼叫的release版的依賴庫導致崩潰,在pro檔案中加版本判斷解決:

config(debug,debug|release)

else

JSONKit編譯報錯解決方法

如果從github上下來的jsonkit在使用的時候報編譯錯誤,可以按如下的方式嘗試解決 1 build phases compile sources,雙擊jsonkit.m,輸入 fno objc arc 2 修改jsonkit.m檔案第680行,修改為object setclass array,...

編譯 libiconv 報錯解決方法

第乙個方法 切換到libiconv srclib目錄下 cd srclib 修改stdio.in.件 vim stdio.in.h 通過搜尋,定位到 gl warn on use gets,gets is a security hole use fgets instead 這一行,然後在這一行的前後...

caffe 編譯,安裝 報錯解決方法

sudo apt install caffe cuda fix missing make j8 make pycaffe sudo apt install protobuf compiler sudo apt get install libgoogle glog dev 1.caffe blob.h...