天天看點

關于編譯錯誤整理

包含頭檔案順序:

系統頭檔案

第三方頭檔案【你使用了别人的頭檔案】

項目中建立的的頭檔案

Part1:

error C4996 use _CRT_SECURE_NO_WARNINGS

處理方法:預處理器定義

屬性-》c+±》預處理器-》預處理器定義-》編輯-》加入你所需要的預處理的内容

Part2:

error C4430;缺少類型說明符

[1] 原因:如果存在兩個類的頭檔案apple.h和boy.h,在apple.h中包含了boy類的頭檔案(即apple.h中存在 #include“boy.h”);而在boy.h中又存在#include“apple.h”,且這兩個類中的某一個類又使用了另一個類的對象。

[2] 沒有包含要定義的頭檔案。

Part3:

error LINK 2019

除了考慮網上說的一些解決方法,還要考慮如果xx.h頭檔案中有模闆,謹記 C++編譯器不支援模闆分離模型,需要将模闆的實作與定義放在一個頭檔案中。

LNK 2019 無法解析的外部符号,該符号在函數。。。中被引用

【1、 頭檔案互相包含

【2、 沒有入口main函數

【3、 頭檔案包含重複】

Part4:

error LNk1104:無法打開….exe的錯誤

解決方案

[1] 你所需要添加的庫檔案是否添加成功

[2] 删除已經生成的Debug檔案,重新生成,一般不能删除

[3] 打開任務管理器,檢視…exe是否被占用,如果占用,立即結束、

[4] 如果以上都不行的話,關閉防毒軟體,重新調試

Part5:

Qt中,0xC0000005;讀取位置0xCDCDCDD1時發生沖突

這種情況多數是指針的問題,考慮一下指針有沒有初始化 或者指針delete後 有沒有指派為NULL

讀取位置。。。發生沖突

給數組配置設定了比小的記憶體空間

句柄或指針子在使用前被釋放

Part6:

error LNK2005 已經在xxx.obj中定義

項目–屬性 —連接配接器—指令行 輸入: /FORCE:MULTIPLE

Part7:

error C3861 “xxx”找不到辨別符

【沒有包含該函數所屬子產品的頭檔案,添加需要的頭檔案即可】

Part8:

LNK 1168 無法打開的xx.exe進行寫入

【将任務管理器中之前生成的exe,關閉即可】

Part9:

對于無法讀取記憶體

1、考慮有沒有為變量配置設定記憶體。指針類型有沒有new、int類型有沒有初始化(對于int類型的變量,為其初始化,系統就會為其配置設定相應的記憶體空間)
2、有時候會出現,從一個線程a調到另一個線程b,線程b根本沒有使用到其構造函數,是以b中的成員就沒有初始化,故沒有配置設定記憶體空間。(解決方法:在a線程中定義了b的對象。g_pReceiverReactor = new ReceiverReactor;)
           

Part10:

char類型的數組什麼時候等價于string類型呢?

char配置設定的記憶體填滿,同時最後一個字元為結束符

Part11:

由于找不到msvcr100d.dll

這種錯誤一般是編譯器的錯誤,可以在Debug檔案中拷貝一些東西

C:\Windows\System32

Part12:

遠端連接配接連接配接不上

除了正常問題,還有可能沒有為主機配置設定ip位址。将主機連接配接上顯示器,計算機屬性設定一下配置IP位址,還有使用者名。

繼續閱讀