最近將編程環境升級到VS2008,結果很多原來正常編譯的projects都出現了編譯告警和錯誤?;艘恢芏鄷r間熟悉下VS2008.,總體來看vs2008在64位編程、多核/多處理器編譯、函數的安全性、c++模板的支持方面都有很多改進。但是在升遷到新的環境之前也有很多問題需要重新考慮了。
1。time_t在vs2003中默認是32位__time32_t,現在默認為__time_64_t了,如果要繼續兼任原有代碼必須在頭文件的開始處增加如下語句
#ifndef _USE_32BIT_TIME_T
#define _USE_32BIT_TIME_T//use __time32_t
#endif
2.sprintf,memcpy之類的函數都會提示告警,要繼續使用這些函數必須在定義宏
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS
3.編譯時出現:無法打開vc90.pdb的錯誤。在MSDN上搜索了一下,解決辦法是
http://msdn.microsoft.com/en-us/library/hk8k8k4h(VS.80).aspx原文貼在這里,主要是因為vs2008支持一在個solutions下多個不相互依賴的project的并行編譯,當然前提是你的cpu是多核的或者有多個cpu。如果多個projects的output目錄相同就會碰到同時寫入vc90.pdb的問題。知道了原因就很好解決了。
Title: You may receive a "PRJ0008" or "C2471" or "C1083" or "D8022" or "LNK1103" or similar error message when you try to build a solution in Visual C++
Symptoms:
- D8022 : Cannot open 'RSP00000215921192.rsp'
- PRJ0008 : Could not delete file 'vc90.idb'.
- C1083 : Cannot open program database file 'vc90.pdb'
- C2471 : Cannot update program database 'vc90.pdb'
- LNK1103 : debugging information corrupt.
Cause:
This problem occurs when all of the following conditions are true:
- You have a solution with more than one project in it.
- Two or more of the projects are not dependent on each other.
- You have parallel builds enabled. (Tools -> Options: Projects and Solutions, Build and Run: "maximum number of parallel project builds" is set to a value greater than 1)
- You are building on a system with multiple CPUs (cores).
- Two or more of the non-dependent projects are configured to use the same Intermediate and/or Output directory.
- A specific race condition in mspdbsrv.exe remains uncorrected.
Resolution:
To resolve the problem do one or more of the following:
- Reconfigure the non-dependent projects to specify an Intermediate and Output directory that is different from one another, e.g. Output Directory = "$(SolutionDir)$(ProjectName)\$(ConfigurationName)", Intermediate Directory = "$(OutDir)".
- Adjust your solution's project dependencies (Project -> Project Dependencies...) so that each is dependent on another.
- Disable parallel builds.
- Add the "/onecpu" boot option to your boot.ini file.
- Change you BIOS settings to enable/use only one CPU.
- File a problem report with Microsoft Technical Support and keep bugging the *** out of them until they eventually fix mspdbsrv.