日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

调试错误解决方案之VC++

發(fā)布時間:2023/12/9 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调试错误解决方案之VC++ 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文|Seraph

這篇文章主要用來記錄使用Visual Studio過程中,出現(xiàn)的各種error,并提供自己當時解決的方案。
但是,一個error可能由不用原因引起的,文中案例僅供大家參考。

  • nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    解決:將工程設(shè)置為Using MFC in static library

  • cannot open file “mfc42u.lib”
    解決:安裝vc時沒有安裝Unicode版本(默認是不安裝的),可以下載幾個庫文件copy到vc98/MFC/Lib,或者build選擇非Unicode版本編譯(也可以在Set Configuation中配置Unicode相關(guān)刪除)

  • fatal error RC1107: invalid usage; use RC /? for Help
    解決:查看vc++目錄是否有問題
    <1>將附加額外目錄暫時移至工程末尾
    <2>把其中的反斜線(/)替換為雙反斜線(//)或者替換為斜線

  • LINK : fatal error LNK1000: Internal error during IncrBuildImage
    解決:<1> 項目(Project)->屬性(Property)->鏈接器(Linker)->常規(guī)(General) 下面的“啟用增量鏈接(Enable Incremental Linking)”,將“是(/INCREMENTAL)”改為“否(/INCREMENTAL:NO)”。不過這又引入了另外一個警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”規(guī)范)。
    <2> 選擇項目,屬性(Property pages)->配置屬性(Configuration Properties) ->C/C++,修改“調(diào)試信息格式(Debug Information Format)”為“程序數(shù)據(jù)庫(Program Database(/Zi))”即可。

  • LINK1123:failure during conversion to COFF:file invalid or corrup
    解決:將C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe目錄下的cvtres.exe文件用C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe代替

  • error c2064:項不會計算為接受1個參數(shù)的函數(shù)
    解決:可能是運算符乘號未寫

  • error c2228:"Grade"左邊必須有類/結(jié)構(gòu)/聯(lián)合
    解決:不一定是左邊的類結(jié)構(gòu)問題,前一語句缺少“;”也會導致這個錯誤。

  • error C2440: “=”: 無法從“const char [11]”轉(zhuǎn)換為“LPCWSTR”
    解決:vc6.0運行沒問題,vs2005之后默認Unicode字符集,可將其改為Muti-bye。

  • error LNK2019:無法解析的外部符號 _main,該符號在函數(shù) ___tmainCRTStartup 中被引用
    解決:建錯工程了,應該是win32 application(window應用程序)
    win32 application和win32 Console Application區(qū)別:
    win32 application就是普通的常見的窗口應用程序
    win32 Console Application就是MS-DOS窗口(命令提示符)

  • error C4996:‘sprintf’:This fuction or variable may be unsafe
    解決:將‘sprintf’改為‘sprintf_s’,警告就不會再有了。
    很多函數(shù)不進行參數(shù)檢測(越界類等…),微軟擔心使用這些會造成內(nèi)存異常,所以就改寫了同樣的功能的函數(shù),改寫的函數(shù)進行了參數(shù)的檢測,使用這些新的函數(shù)會更安全和便捷。一般只需加_s就行。

  • error C2084: 函數(shù)“XXXXXX“已有主體
    解決:檢查是否有重名的函數(shù)定義

  • error C2065:‘hInstance,NULL’ : undeclared identifier
    解決:主要是“,”是中文字符照成的,可能還會報warning C4003: not enough actual parameters for macro 'CreateWindowA’錯

  • 致命錯誤 RC1015: 無法打開包含文件 ‘a(chǎn)fxres.h’
    解決:實際上這個問題很多情況下是由于路徑設(shè)置的問題引起的
    **executatble files:**C:\Program Files\Microsoft Visual Studio\Common\MSDev98\BinC:\Program Files\Microsoft Visual Studio\VC98\BINC:\Program Files\Microsoft Visual Studio\Common\TOOLSC:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT
    **include files:**C:\Program Files\Microsoft Visual Studio\VC98\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
    **library files:**C:\Program Files\Microsoft Visual Studio\VC98\LIBC:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB
    **source files:**C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRCC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC

  • error C2065: ‘xxxxxxxx’:undeclared identifier
    解決:很多是因為“;”或者其他符號是中文下輸入,造成的。

  • error C2653: is not a class or namespace name
    解決:沒建立一個新類都要在.cpp文件中加入#include “stdafx.h”,而且要加在第一行,
    編譯器通過一個頭文件stdafx.h 來使用預編譯頭文件。

  • 缺失return經(jīng)常會使彈出內(nèi)存操作錯誤
    解決:理清程序結(jié)構(gòu),找到漏寫的返回值。

  • First-chance exception in main.exe: 0xC0000005: Access Violation.
    解決:訪問違例,使用空間,但是未申請,也可能在使用之前被delete了。

  • LINK : fatal error LNK1168: cannot open Debug/ling.exe for writing
    解決:結(jié)束ling.exe進程。

  • error LNK2001: 無法解析的外部符號 "public: void __thiscall CSketcherView::OnColorBlack
    解決:OnColorBlack在源文件中未寫

  • 菜單響應函數(shù)消息類型不見了!
    解決:直接刪除.ncb文件

  • error LNK2019 : unresolved external symbol __imp__PlaySoundW@12 referenced in function _WinMain@16
    解決:#pragma comment(lib,“winmm.lib”)

  • please enter the path for mfcs42d.pdb
    解決:將debug文件夾內(nèi)容全部刪除

  • 調(diào)試錯誤 ASSERTE(_CrtIsValidHeapPointer(pUserData))
    解決:delete 野指針前給指針賦空

  • 無法啟動此程序 ,因為計算機中丟失MFC80UD.DLL
    解決:把工程debug下文件全部刪除,然后rebulid project

  • VC6.0 error LNK2001: unresolved external symbol _main
    解決:[Project] --> [Settings] --> 選擇"Link"屬性頁, 在Project Options中將/subsystem:console改成/subsystem:windows

  • fatal error RC1004: unexpected end of file found
    解決: 頭文件里少了結(jié)尾的回車

  • vc助手寫到一般時突然沒有提示了
    解決:可能是前面有哪句寫錯了,然后導致后面識別的全是字符

  • File f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/viewscrl.cpp, Line 385
    解決:需要在類開時時,增加SetScrollSizes ( MM_TEXT,CSize (0 , 0 ) );

  • error C2668: ‘sqrt’ : ambiguous call to overloaded function
    解決:sqrt處理類型必須是double

  • error C2144:syntax error : ‘char’ should be preceded by ‘;’
    解決:如果在 a.h 里缺少分號, 則編譯器會在 b.h 中會提示錯誤. 所以要在 a.h 中找錯誤

  • <dshow.h>無法打開
    解決:vs編譯器沒有包含dx的drawshow中的include、lib

  • fatal error C1001: An internal error has occurred in the compiler.
    解決:清理解決方案,然后build

  • 源文件與模塊生成時的文件不同
    解決:清空解決方案,重新生成解決方案

  • error LNK2001: 無法解析的外部符號 “public: virtual void __thiscall CDib::GetTmplPos(void)” (?GetTmplPos@CDib@@UAEXXZ)
    解決:虛函數(shù)格式錯誤,必須在源文件函數(shù)后加{}

  • x.exe中的0x77dd15de處有未經(jīng)處理的異常:0xC015000F:正被停用的激活上下文不是最近激活的
    解決:在Visual Studio中,選擇Debug | Exceptions菜單項,在彈出的對話框中,勾選所有的Win32 Exceptions。這樣就有機會在第一時間(異常處理前)看到自己的代碼中發(fā)生了什么錯誤而導致拋出異常,從而改正錯誤,消除程序中的隱患。
    (注:可能是析構(gòu)函數(shù)中釋放并未初始化的變量)

  • 在VC++6.0中出現(xiàn)failed to (or don’t know how to) build ‘D:\VC98\MFC\SRC\APPMODUL.CPP’
    解決:系統(tǒng)目錄設(shè)置問題:找到××.dsp文件(××為工程名),用記事本打開,找到如下:SOURCE=“D:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\APPMODUL.CPP” # End Source File # Begin Source File對SOURCE修改。

  • error C2146: syntax error : missing ‘;’ before identifier ‘PVOID64’
    解決:將VS編譯器環(huán)境中directdraw包含文件和包含庫調(diào)至默認庫下方.
    vs中會先加載項目屬性中的包含文件和庫,再加載vs本身配置的屬性。
    所以,導致有些對庫包含順序有要求的庫文件出錯?!簿褪钦f,directdraw不能在項目屬性中設(shè)置

  • LINK :fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
    解決:項目–>工程屬性->配置屬性-> 清單工具->輸入和輸出->嵌入清單,選擇[否]

  • fatal error C1033: cannot open program database 'e:\實驗室工程\newassistivev
    解決:將文件夾換成可讀寫狀態(tài)

  • fatal error C1001: An internal error has occurred in the compiler.
    解決:將解決方案清理,再重建(因為解決方案不是最新的)

  • 彈出不能找到“SpeechRecognizeBase.h”等文件
    解決:將項目屬性的鏈接和附加目錄修改好

  • fatal error C1083:NO such file or directory
    解決:項目屬性附加目錄添加:$(ProjectDir),表示當前工程目錄

  • 顯示未聲明某變量
    解決:確認是否有,如果其在另一關(guān)聯(lián)文件定義了,注意要用extern聲明該變量。

  • 斷點無效
    解決:1)清空生成的解決方案,重新生成
    2)將工具->選項->調(diào)試里->常規(guī) 找到 要求原文件與原始版本完全匹配 不要打勾
    (此方法最后試用)

  • vc80.pdb
    解決:將文件路徑全部改成英文

  • error C2143: syntax error : missing ‘;’ before ‘<’
    error C2433: ‘CDib:: vector’ : ‘virtual’ not permitted on data declarations
    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    error C2238: unexpected token(s) preceding ‘;’
    解決:使用vector,未寫using namespace std;

  • LINK : fatal error LNK1104: 無法打開文件“ejTTS.lib”
    解決:將鏈接器中的附加庫目錄修改為正確的路徑

  • chkstk.asm 錯誤
    解決:在項目-》屬性-》配置屬性-》鏈接器-》系統(tǒng),將堆棧保留大小弄大點,如50M(52428800)是堆太小加載溢出(如數(shù)組buffer定義的太大就會造成此現(xiàn)象)

  • error C2065: ‘IDD_DIALOG_WNDSIZE’: undeclared identifier
    解決:將resources.h包含到該對話框頭文件中來

  • 當編譯后,按F5進行調(diào)試,斷點無效(或有效,但是位置亂跳)
    解決:勾選 工具-》調(diào)試-》常規(guī) 要求源文件與原始版本完全匹配

  • 程序通過VS編譯器F5運行可以,直接點擊exe運行不正常
    解決:寫絕對路徑,問題就會消失。
    缺省情況下:調(diào)試時使用的工作目錄是你的項目所在的目錄。而直接運行時,是你的可執(zhí)行文件所在的目錄。
    (有則有,無則無,不會無中生有,定是另有乾坤)

  • 加入某些資源文件在最終程序中是有效果的,但是又用vs搜尋其ID不到
    解決:清理解決方案,重新生成解決方案

  • cannot convert parameter 1 from ‘const char *’ to ‘LPCWSTR’
    解決:將字符串用_T()轉(zhuǎn)換或修改字符集為多字節(jié)字符集(vs05默認為UNICODE)
    注:_T()包含在tchar頭文件里

  • error C4430: missing type specifier - int assumed. Note: C++ does not
    解決:給函數(shù)聲明加上返回類型
    注:vc6.0默認類型為int型,而vs不會這么做,所以會報錯。

  • 放在桌面(win8)的工程文件無法生成動態(tài)鏈接庫DLL
    解決:將工程移置其他目錄嘗試
    (未知根源,關(guān)閉工程時還會報無法保存項目設(shè)置信息)

  • 生成的dll無法起到效果
    解決:注意系統(tǒng)有分64和32,64位程序必須調(diào)用64的dll
    (用相應的平臺生成dll文件)

  • warning C4786: std::reverse_iterator<std::basic_string<char,std::char_traits,std::allocator > const *,std::basic_string<char,std::char_traits,std::allocator >,std::basic_string<char,std:: char_traits,std::allocator > const &,std::basi。。。
    解決:在#include 前加上 #pragma warning(disable:4786),強制去除警告
    注:vc6.0對vector支持不是很好,所以才會出現(xiàn)此警告。

  • please enter the path for mfcs42d.pdb 提示解決方法
    解決:Project settings | Link | Debug, 不選 “Separate types”。然后,rebuild all。重新把Separate types 勾選上。

  • 59.LINK : fatal error LNK1104: 無法打開文件“Log.lib xxx.lib xxx.lib”
    解決:VS10庫包含之間是用“;”隔離開來的,VC6.0是用空格。

  • R6010 abort() has been called
    解決:一般是指針訪問越界導致的,仔細檢查是否有內(nèi)存寫入失敗,依然會當作成功取獲取指針,并讀取未寫入任何信息的內(nèi)存控件。

  • error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
    解決:將“Configuration”-“General”中Configuration Type修改為Dynamic Library(.dll)
    原因:由于自己是要編譯DLL工程,沒有相應的啟動入口函數(shù)。

  • error C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead.
    解決:在預處理器定義中添加_CRT_SECURE_NO_WARNINGS
    或者新建工程時不勾選:安全開發(fā)生命周期(SDL)檢查
    原因:因為很多版本都沒有使用安全函數(shù),為減少改動,關(guān)閉相關(guān)檢查。

  • new xxx一個自建類時,彈錯:應輸入類型說明符。
    解決:這種情況基本時函數(shù)或變量名與new的那個類同名造成的,將函數(shù)同名函數(shù)或者同名變量名修改下就可以了。
    解析:編輯器不是萬能的,我們不能自以為編譯器可以處理什么,而是要了解編譯器處理邏輯,并知道哪些時編譯器處理不了的。這個時候就很體現(xiàn)平常良好的編程習慣的好處了,我們一般變量名會全部小寫,類首字母大寫,這樣就完全不會出現(xiàn)變量名和類名重名的情況。

  • VC轉(zhuǎn)VS工程出現(xiàn):LINK : fatal error LNK1117: 選項“mapinfo:lines”中的語法錯誤。
    解決:配置屬性-鏈接器-命令行右側(cè)的附加選項刪除mapinfo:lines。

  • error LNK2019: 無法解析的外部符號 _GetIfEntry@4 ,
    解決:缺失鏈接庫,添加#pragma comment(lib, "IPHlpApi.lib")。

  • 使用CArray數(shù)組,報 afxtempl.h Line:254錯誤。
    解決:可能是數(shù)組越界導致。不一定是指CArray本身,程序任何地方數(shù)組越界,都可能不可預知的錯誤。

  • error C4996: ‘GetVersionExA’: 被聲明為已否決。
    解決:將Project Properties > Configuration Properties > C/C++ > General > SDL checks關(guān)掉。

  • error C2872: “ACCESS_MASK”: 不明確的符號。
    解決:Opencv的域名沖突。注釋掉所有的using namespace cv,使用域名引用cv::。

  • 找不到 Windows SDK 版本8.1。請安裝所需的版本的 Windows SDK 或者在項目屬性頁中或通過右鍵單擊解決方案并選擇“重定解決方案目標”來更改 SDK 版本。
    解決:右鍵項目屬性,選擇重定向項目,在彈出的對話框中,選擇我們的SDK版本?;蛘咧g安裝8.1版本的SDK。

  • 每一天都是一個新的日子。走運當然是好的,不過我情愿做到分毫不差。這樣,運氣來的時候,你就有所準備了。------《老人與?!?/p>

    總結(jié)

    以上是生活随笔為你收集整理的调试错误解决方案之VC++的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。