vs2003工程轉 VS2010


vs2003使用的了很多年,的確很好用,內存耗費少,啟動速度快,真不舍得丟棄,但是win7之后經常在調試的時候出現pdb文件被鎖定無法重新生成的問題,網上也有一些招數處理,但都不是最好的。沒辦法了只能升級為vs2010了。當然這是我的解決電腦的性能問題,因為vs2010非常耗內存的,行,給它8G吧,win7 64位,一切都ok了。但是原來的vs2003的工程文件升級為vs2010后並不是像微軟講的那么容易就可以用了。常常需要新建一個vs2010的工程,把原來的代碼文件一個個的添加進去。我總結一個辦法,可以更快的解決。

 

  一般我們用vs2010打開一個111.vcproj文件,它會出來轉換向導提示,我們根據提示自動轉換為2010項目之后,馬上編譯,提示問題:

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

 

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

 

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

 

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

 

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

// stdafx.h : 標准系統包含文件的包含文件, // 或是經常使用但不常更改的 // 項目特定的包含文件

#pragma once

#ifndef _SECURE_ATL #define _SECURE_ATL 1 #endif

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

/* // 如果您必須使用下列所指定的平台之前的平台,則修改下面的定義。 // 有關不同平台的相應值的最新信息,請參考 MSDN。 #ifndef WINVER    // 允許使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。 #define WINVER 0x0501  //為 Windows98 和 Windows 2000 及更新版本改變為適當的值。 #endif

#ifndef _WIN32_WINNT  // 允許使用 Windows NT 4 或更高版本的特定功能。 #define _WIN32_WINNT 0x0501  //為 Windows98 和 Windows 2000 及更新版本改變為適當的值。 #endif      

#ifndef _WIN32_WINDOWS  // 允許使用 Windows 98 或更高版本的特定功能。 #define _WIN32_WINDOWS 0x0501 //為 Windows Me 及更新版本改變為適當的值。 #endif

#ifndef _WIN32_IE   // 允許使用 IE 4.0 或更高版本的特定功能。 #define _WIN32_IE 0x0500 //為 IE 5.0 及更新版本改變為適當的值。 #endif */

#include "targetver.h"

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 構造函數將是顯式的

// 關閉 MFC 對某些常見但經常被安全忽略的警告消息的隱藏 #define _AFX_ALL_WARNINGS

#include <afxwin.h>         // MFC 核心和標准組件 #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 套接字擴展 #include <winsock2.h> #include <iphlpapi.h>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM