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 DLL's you can find in the dlls/ directory of the Wine source tree.
If you are missing GUIDs at the link stage, add -lwine_uuid to the link line.
gcc is more strict than VC++, especially whan compiling C++. This may require you to add casts to your C++ to prevent overloading abiguities 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 <wine-devel@winehq.com>.