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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VS2003升级VS2010修改

發(fā)布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VS2003升级VS2010修改 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

BUG1:
fatal error C1189: #error: MFC does not support WINVER less than 0x0601. Ple

在StdAfx.h中把#define WINVER 0X0500 //為 Windows98 和 Windows 2000 及更新版本改變?yōu)檫m當(dāng)?shù)闹怠?

改為:
#define _WIN32_WINNT 0x0601

BUG2:
https://www.cnblogs.com/slowtech/p/5216120.html
vs2003工程轉(zhuǎn) VS2010

一般我們用vs2010打開一個111.vcproj文件,它會出來轉(zhuǎn)換向?qū)崾?#xff0c;我們根據(jù)提示自動轉(zhuǎn)換為2010項目之后,馬上編譯,提示問題:

1> stdafx.cpp
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C2146: 語法錯誤: 缺少“;”(在標(biāo)識符“PVOID64”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支持默認(rèn) int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C2146: 語法錯誤: 缺少“;”(在標(biāo)識符“Buffer”的前面)

其實類似的問題,很多人都問過,但回答都不太正統(tǒng),有些甚至建議直接修改winnt.h文件(太橫了!)。

我發(fā)現(xiàn)其實這就是一個頭文件包含的問題,我們用vs2010去新建一個項目的時候,大家有沒有發(fā)現(xiàn),對比用vs2003來新建一個文件,目錄里面會多了一個targetver.h的頭文件。這就是關(guān)鍵了。通過對比vs2010新項目里面的stdafx.h和vs2003里面的stdafx.h文件,可以看出原來什么WINVER等的定義,到了vs2010里面都用了#include "targetver.h"來代替。

那我們也參考著這么做唄,修改原來的stdafx.h,注銷掉原來系統(tǒng)宏定義的一大段,直接用#include "targetver.h"來代替。再次用vs2010編譯,一切都o(jì)k了。。。

貼上,修改后的stdafx.h文件

// stdafx.h : 標(biāo)準(zhǔn)系統(tǒng)包含文件的包含文件, // 或是經(jīng)常使用但不常更改的 // 項目特定的包含文件

#pragma once

#ifndef _SECURE_ATL #define _SECURE_ATL 1 #endif

#ifndef VC_EXTRALEAN #define VC_EXTRALEAN // 從 Windows 標(biāo)頭中排除不常使用的資料 #endif

/* // 如果您必須使用下列所指定的平臺之前的平臺,則修改下面的定義。 // 有關(guān)不同平臺的相應(yīng)值的最新信息,請參考 MSDN。 #ifndef WINVER // 允許使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。 #define WINVER 0x0501 //為 Windows98 和 Windows 2000 及更新版本改變?yōu)檫m當(dāng)?shù)闹怠?#endif

#ifndef _WIN32_WINNT // 允許使用 Windows NT 4 或更高版本的特定功能。 #define _WIN32_WINNT 0x0501 //為 Windows98 和 Windows 2000 及更新版本改變?yōu)檫m當(dāng)?shù)闹怠?#endif

#ifndef _WIN32_WINDOWS // 允許使用 Windows 98 或更高版本的特定功能。 #define _WIN32_WINDOWS 0x0501 //為 Windows Me 及更新版本改變?yōu)檫m當(dāng)?shù)闹怠?#endif

#ifndef _WIN32_IE // 允許使用 IE 4.0 或更高版本的特定功能。 #define _WIN32_IE 0x0500 //為 IE 5.0 及更新版本改變?yōu)檫m當(dāng)?shù)闹怠?#endif */

#include “targetver.h”

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 構(gòu)造函數(shù)將是顯式的

// 關(guān)閉 MFC 對某些常見但經(jīng)常被安全忽略的警告消息的隱藏 #define _AFX_ALL_WARNINGS

#include <afxwin.h> // MFC 核心和標(biāo)準(zhǔn)組件 #include <afxext.h> // MFC 擴展 #include <afxdisp.h> // MFC 自動化類

#include <afxdtctl.h> // Internet Explorer 4 公共控件的 MFC 支持 #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h> // Windows 公共控件的 MFC 支持 #endif // _AFX_NO_AFXCMN_SUPPORT

#include <afxsock.h> // MFC 套接字?jǐn)U展 #include <winsock2.h> #include <iphlpapi.h>

BUG3:
錯誤 1 error C1083: 無法打開包括文件:“targetver.h”: No such file or directory d:\1mysmjs\分控\2010code\code\boatctrl\specctrl\stdafx.h 33

復(fù)制targetver.h文件到現(xiàn)在的項目文件夾目錄下面

BUG4:
LINK : fatal error LNK1104: 無法打開文件“mfc71.lib”的原因又一例
[環(huán)境]
Windows XP OS;
Visual Studio 2008;
本來是vs2003開發(fā)的工程,遷移至vs2008后出錯。

[分析]
mfc71.lib是vs2003所使用的MFC類庫;雖然我的機器中同時安裝有vs2003和2008兩個版本,不過由于我的vs2008的類庫查找PATH中找不到mfc71.lib而報的錯。更進一步地說,vs2008的類庫查找PATH中本來就不應(yīng)該找到mfc71.lib,而是應(yīng)該使用它所對應(yīng)的mfc90.lib。

[對策]
打開工程屬性, Linker > Input > Ignore Specific Libraries(忽略特定庫)中輸入 mfc71.lib;mfcs71.lib,重新編譯即可。

對應(yīng).vcproj文件中選項為:IgnoreDefaultLibraryNames=“mfc71.lib;mfcs71.lib”

[后記]
并不是每個遷移的工程都會報如上的錯。目前尚不清楚,遷移后的工程哪個設(shè)定使得vs2008一定去找舊的mfc。若能找得到的話,直接修改那個可能是更對的做法。

總結(jié)

以上是生活随笔為你收集整理的VS2003升级VS2010修改的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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