Unfortunately, despite the seeming simplicity, it is often not enough just to rebuild a 32-bit program for a 64-bit platform and fix compiler errors to provide assured operability of the application being ported. The main issue of migrating to 64 bits is the presence of hidden 64-bit errors, i.e. cases when a code fragment that worked correctly in the 32-bit version causes errors in the 64-bit version.
Most often 64-bit errors occur in the following code fragments:
You may read a detailed description of each error type in the article A Collection of Examples of 64-bit Errors in Real Programs. Although all the errors in code that reveal themselves while compiling the program for 64-bit systems are related to inaccurate compliance with C/C++ standards, no real project is secure from them.
Another issue of moving to a 64-bit platform is dependence of your application on the libraries that do not have 64-bit versions since combined use of a 64-bit program and a 32-bit library is impossible in Windows systems.
A detailed description of the migration process and estimate of time and cost of porting an application to a 64-bit platform are given in this article.