1. 程式人生 > >一些VS2013下使用QT和MFC的錯誤解決方案

一些VS2013下使用QT和MFC的錯誤解決方案

本人主要為QT上的途中也有使用VS進行mfc或windows相關的程式碼編輯但以下內容對於QT的可參考性會更高一些

若有錯誤請提醒我更改,或者更好的辦法也請在評論中指出,感激不盡

錯誤C4996:'fopen':此函式或變數可能不安全。 

做法可參照:http://jingyan.baidu.com/album/49711c616b8a1ffa441b7cdc.html?picindex = 1


錯誤C2664:“int GetKeyNameTextW(LONG,LPWSTR,int)”:無法將引數2從“char [80]”轉換為“LPWSTR”
做法:設定下工程屬性,設為多位元組。工程屬性--general - characterset --- usemulti-bytecharacterset




error C3861:“ModuleFromAddress”:找不到識別符號
做法:該識別符號未宣告定義,需宣告定義該識別符號;


錯誤C2660:'LoadLibraryA':函式不帶2個引數
做法:引數錯誤,檢查引數原型,檢視引用是否正確


錯誤MSB8031:為非Unicode字符集構建MFC專案是棄用。
做法:缺少一個MFC外掛
使用https://download.microsoft.com/download/0/2/3/02389126-40A7-46FD-9D83-802454852703/vc_mbcsmfc.exe連結下載安裝,
參照HTTP://井研.baidu.com /條/ ff42efa916aca5c19e22029a.html



錯誤C2039:“ImageDirectoryEntryToData”:不是“`global namespace'”的成員
新增:以下兩行程式碼
#include <imagehlp.h>
#pragma comment(lib,“imagehlp”)


IntelliSense:未定義識別符號“_countof”
新增以下兩行程式碼:
#include <stdlib.h>


錯誤C1189:#error:需要在tchar.h之後包含strsafe.h
在stdafx.h檔案中新增#include <tchar.h>


錯誤C2733:“SetSysHook”:不允許重要函式的第二個C連結

原因:extern“C” __ declspec (dllexport),以C的方式,即不支援過載,所以程式碼中有匯出函式的引數不同,修改即可


錯誤LNK1201:寫入程式資料庫“E:\ chf_yjy's_work \ work5 \ Procress \ HookTerminateProcess \除錯\ HookTerminateProcess.pdb”時出錯;請檢查是否是磁碟空間不足,無效路徑許可權或不夠
做法:開啟專案屬性- >連結器- >除錯,去掉除錯資訊,幹掉PDB檔案,以後不依賴PDB就好了。但是這樣你就等於閹割了VS的除錯功能,果然是欲練此功必先自宮呀。(需要 好的辦法......)
修正:
錯誤LNK1104:無法開啟檔案“debug \\ print.ilk”
做法同上.error


C2440:“初始化”:無法從“const char [20]”轉換為“wchar_t”
參照以下程式碼:
wchar_t user [] = L“administrator “; 


錯誤C1853:“Debug \ mymhook.pch”預編譯標頭檔案來自編譯器的早期版本,或者預編譯頭為C ++而在C中使用它(或
相反做法:可將該專案屬性 - “C / C ++ - “預編譯頭,中的預編譯頭選項設定為空
可參照:http://www.vcerror.com/?p = 2081


警告C4819:該檔案包含不能在當前內碼表(936)中表示的字元。
做法可參照:http://blog.csdn.net/enjoy517905407/article/details/37958035
使用VS_QT整合環境時,當出現此應用程式無法啟動,因為它無法找到或載入Qt平臺外掛“windows”.. 。的彈框,應當在EXE資料夾建立平臺的子資料夾,
從QT的安裝目錄中的:\ Qt的\ Qt325.5.1 \ 5.5 \ msvc2013 \外掛\平臺目錄拷貝出qwindows.dll(釋放)或qwindowsd.dll(除錯)],放到EXE的平臺目錄下


錯誤C2440:'=':無法從'const char [xx]'轉換為'char *'
可以這樣做:
feeble =(char *)malloc(sizeof(“”));
strcpy(虛弱,“”);

錯誤C2375:'WSAAsyncGetHostByAddr':重新定義; 不同的linkageC:\ Program Files(x86)\ Windows Kits \ 8.1 \ Include \ um \ Winsock2.h

重複包含了標頭檔案Winsock2.h,去除這一條包括語句即可               

錯誤C1083:無法開啟原始檔:....... moc_XXX.cpp 

XXX.cpp中可能存在非法字元如下劃線等,需將相應檔案重新命名

錯誤C4430:缺少型別說明符 - 假定為int。注意:C ++不支援default-int

錯誤C2143:語法錯誤:'&'之前缺少','

以上兩個錯誤一同出現,原因是我在傳參時一個引數為類aaa,然而我包含了相應的標頭檔案卻沒有在使用之前進行類aaa;的宣告

操作:即使用前宣告該類

在VS2008中生成時出錯:錯誤C4430:缺少型別說明符 - 假設為int。注意:C ++不支援default-int

這是因為在VC6中,如果沒有顯示的指定返回值型別,編譯器將其視為預設整型。但是VS2005不支援預設整型。

解決方法如下:

開啟:專案----專案屬性----配置屬性---- C / C ++ ----命令列,在附加選項那裡新增/ wd4430這個選項(參考自HTTP://www.cnblogs。 COM / cuteshongshong /存檔/ 2012/10/11 / C4430.html)

嚴重性程式碼說明專案檔案行禁止顯示狀態

錯誤C2440“初始化”:無法從“const wchar_t [8]”轉換為“LPWSTR”AdvService c:\ users \ administrator \ source \ repos \ advservice \ advservice \ advservice.cpp 27

錯誤程式碼:SvcReportEvent(szSvcName,TEXT(“StartServiceCtrlDispatcher”));

解決:TCHAR tmp [] = TEXT(“StartServiceCtrlDispatcher”);
  SvcReportEvent(szSvcName,tmp);

tmp/moc/moc_Controller.cpp:45: error: 'staticMetaObject' is not a member of 'AbstractClass'
tmp/moc/moc_Controller.cpp: In member function 'virtual void* Controller::qt_metacast(const char*)':
tmp/moc/moc_Controller.cpp:61: error: 'qt_metacast' is not a member of 'AbstractClass'
tmp/moc/moc_Controller.cpp: In member function 'virtual int Controller::qt_metacall(QMetaObject::Call, int, void**)':
tmp/moc/moc_Controller.cpp:66: error: 'qt_metacall' is not a member of 'AbstractClass'
make: *** [tmp/objects/moc_Controller.o] Error 1