DLL's are very similar in concept to *nix shared objects
just a bunch of functions / objects accessible through outward facing symbols

MinGW is what you need
stands for Minimalist GNU for Windows
and it's the GCC + associated build utils ported to Windows

Get yourself a MinGW cross compiler for your platform, and you'll be able to compile native Windows code from Mac or Linux

there's plenty of documentation around covering cross-compiling