http://www.mingw.org/wiki/sampledll
czyli w skrócie:
tak budujesz dll'a z plików .cpp
g++ -c -DBUILDING_EXAMPLE_DLL example_dll.cpp
g++ -shared -o example_dll.dll example_dll.o -Wl,--out-implib,libexample_dll.a
a tak go używasz(w cpp musisz mieć plik nagłówkowy do kompilacji)
g++ -c example_exe.cpp # sama kompilacja, bez konsolidacji. Tworzy pliki .o
g++ -o example_exe.exe example_exe.o -L. -lexample_dll
i w kodzie dołączasz plik .h