I inherited a very large and complex project (actually it is a “solution” consisting of 119 “projects”, most of which are DLLs) that were built and tested under VC8 (VS2005), and I have the task of porting this to VC9 (VS2008).
The migration process that I used was:
- Copy the VC8.sln file and rename it. to the VC9.sln file.
- Copy all the VC8 project files and rename them to VC9 project files.
- Modify all VC9 project files, with / VC 8 / VC9.
- Edit VC9.sln, s / vc8 / vc9 /
- Download VC9.sln using VS2008, and let the IDE 'convert' all the project files.
- Fix compiler and linker errors until I got a good build.
So far, at this last stage, I have encountered the following problems.
1) The change in the method of decorated names is calculated, which leads to truncation of names.
This is more than just a warning ( http://msdn.microsoft.com/en-us/library/074af4b6.aspx ). Libraries created with this warning will not communicate with other modules. Application of the solution in MSDN was non-trivial, but feasible. I examined this problem separately in How to increase the allowed decorated name length in VC9 (MSVC 2008)?
2) A change that does not allow you to assign zero to an iterator. This is consistent with the specification, and it was fairly easy to find and fix these previously made coding errors. Instead of assigning zero to the iterator, use the value of end ().
3) ANSI. .
4) . . /Zm 999 PCH. PCH , , PCH , .
5) dtors. , , , ctor dtor . , VC9, - , . , , .
6) GUID sln vcproj . , , , , .
, , , QA VC8. VC8, , ( VS2005/VC8). , , VC9, , , .
: VC8 VC9. , , " C++". , .
VC8 , crtexe.c. VC9 , , crtdll.c, , . DLL , , , , . , QA .
DLL?
?