It's not because it's 64-bit UNIX and 32-bit Windows. It's because certain things may have depended on certain types being certain sizes, and when you change architecture, they may change. Similar problems can be had moving from 32-bit windows to 64-bit UNIX, 32-bit UNIX to 64-bit Windows, 32-bit UNIX to 64-bit UNIX, 64-bit UNIX to 32-bit UNIX, 32-bit Windows to 64-bit Windows, and 64-bit Windows to 32-bit Windows.
It's
not a Windows vs UNIX thing, it's from programmers that were either sloppy or didn't know better.
A 64-bit Windows environment is still radically different from most 64-bit UNIX(lp64?) environments, presumably because Microsoft just
had to be different
but to track down the problems, track them down, don't just blindly mess around with it.