If you get undefined references to Win32 API calls when building your application: if you have a VC++ .dsp file, check it for all the .lib files it imports, and add them to your applications .spec file. winebuild gives you a warning for unused imports so you can delete the ones you don't need later. Failing that, just import all the DLLs you can find in the dlls/ directory of the Wine source tree.
If you are missing GUIDs at the link stage, add
-luuid to the link line.
gcc is more strict than VC++, especially when compiling C++. This may require you to add casts to your C++ to prevent overloading ambiguities between similar types (such as two overloads that take int and char respectively).
If you come across a difference between the Windows headers
and Wine's that breaks compilation, try asking for help on