Cygwin is a POSIX layer for Windows, but it's not binary-compatible with Linux any more than Linux is binary-compatible with IRIX. AFAIK, UNIX programs don't usually expect to be binary-compatible with other UNIXes, which is part of the reason everything gets distributed as source code. Cygwin ensures that POSIX-like behaviors happen (e.g. you can use signals) even if they don't naturally exist under Windows, but you have to compile with the Cygwin headers.
http://www.cygwin.com/
"Cygwin is NOT a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows.
Cygwin is NOT a way to magically make native Windows apps aware of UNIX � functionality, like signals, ptys, etc. Again, you need to build your apps from source if you want to take advantage of Cygwin functionality."
-Max