Yes, you see, any operating-system creates an environment in which programs run. This takes the form of a collection of "libraries" containing truly-vast amounts of code that programs can simply use.
There are many hundreds of these associated with any operating-system, and every program is utterly-dependent upon them to do almost everything.
These libraries are not implemented the same way from one system to another. You therefore either have to compile the program for the target system or, in the specific case of Windows software, you might be able to use a compatibility-layer called "Wine."
Wine, itself, is a great example of just how different two systems can be... and how complex the seemingly-simple notion of "compatibility layer" can actually be to implement. It, alone, consists of a vast amount of source-code... and it doesn't even come close to replicating the entire Windows environment.