1. 程式人生 > >C++:配置專案屬性解決的各種error問題

C++:配置專案屬性解決的各種error問題

一、提示C系列錯位

1. error C1010:在查詢預編譯頭時遇到意外的檔案結尾。是否忘記了向源中新增“#include “stdafx.h””?

解決方法: 上述問題定位在MemDB.c,在解決方案管理器中查詢"MemDB.c",然後右鍵屬性->常規->C/C++->預編譯頭->“預編譯頭”選擇“不使用預編譯頭”

2. error C2664:不能講引數1從“CString”轉化為“const char*”

**問題原因:**從VC6.0移植到VS2010一般會出現這個問題,就是說VS對字符集的要求更嚴格
解決方法::進入專案-> 屬性->配置屬性

->常規->“專案預設值”中的“字符集”選擇“使用多位元組字符集”


二、提示D系列錯誤

1. error D8016:“/ZI”和“/Gy-”命令列選項不相容”問題

解決方法: 進入專案-> 屬性->C/C++->常規->除錯資訊格式->選擇程式資料庫(/Zi)


三、提示H系列錯誤

1. *.hpj HC5011:Error Cannot open the file “E:\VC++6.0\VC98\MFC\include\afxhelp.hm

**問題原因:**程式碼拷貝到其他電腦會出現這種問題,因為是help檔案的路徑不對
解決方法:

  • 首先找到專案程式碼中的*.hpj 檔案(如果直接找不到可以下一個Everything)
  • 雙擊進入,找到[MAP] (一般在最下邊)。雙擊修改對應的連線
    在這裡插入圖片描述
    將其修改為本機電腦安裝VC6.0的路徑下的.hm檔案,如我的是:
    在這裡插入圖片描述

四、提示M系列錯誤

1. error MSB4018: "VCMessage"任務意外失敗

問題原因: 雙擊錯誤可以定位到一行程式碼中,說輸出與連結的檔名不一樣。開啟工程配置檢查一下,果然,後者應該改成 $(OutDir)SysData.exe
在這裡插入圖片描述
在這裡插入圖片描述


五、提示L系列錯誤

1. error LNK1123: 轉換到 COFF 期間失敗: 檔案無效或損壞

解決方法: 把“D:\VS2010\VC\bin\cvtres.exe”刪除即可。路徑是VS2010的安裝路徑。

2. error LNK2001:無法解析的外部符號

**問題原因:**導致出現2001問題的願意有很多,解決方法也不一樣。這裡只解決Debug版可以通過而Release不能通過的問題。
解決方法: 進入專案-> 屬性->連結器->系統->“子系統”“/subsystem:console”改成“/subsystem:windows” .

3. error LNK2005:@已經在@.obj中定義

問題原因:(1)沒有預編譯頭標頭檔案(2)標頭檔案重複包含
解決方法:(1)進入專案-> 屬性->c/c++->“預編譯頭”選擇“建立/使用編譯頭”(2)在標頭檔案里加入防止重複包含的巨集

4. error LNK2019:無法解析的外部符號 __imp__printf,該符號在函式 @(@) 中被引用

解決方法: 進入專案-> 屬性->連結器->輸入->在 “附加依賴項"中加入"legacy_stdio_definitions.lib” .

5. error LNK2026:模組對於SAFESH映像是不安全的

解決方法: 進入專案-> 屬性->連結器->高階->將*“映像具有高階異常處理程式"改成"否”*


六、提示Warning警告

1. warning C4098: 預設庫“LIBCMT”與其他庫的使用衝突;請使用 /NODEFAULTLIB:library

解決方法: 進入專案-> 屬性->連結器->輸入->*“忽略特定庫”填入"LIBCMT"

2. warning C4189: 預設庫“msvcrt.lib”與其他庫的使用衝突;請使用 /NODEFAULTLIB

解決方法: 進入專案-> 屬性->連結器->輸入->*“忽略特定庫”填入"msvcrt.lib"