De volgende commando's werken prima voor mij met een GCC 4.6.1 van november 2011:
g++ my.cpp -I D:\Opt\MySQL5.5\include ^
D:\Opt\MySQL5.5\lib\libmysql.dll -o myWithDll.exe
g++ my.cpp -I D:\Opt\MySQL5.5\include ^
-L D:\Opt\MySQL5.5\lib -lmysql -o myWithLib.exe
Dus zowel het linken tegen de LIB als de DLL werken.
Mogelijk krijgt u een waarschuwing (zie de opmerking van Gaffi). Dit komt omdat de linker fuzzy linking voor je doet zonder dat je het specificeert; normaal gesproken zou het niet zijn gelukt om te linken. Het is echter aardig zijn en het voor je laten werken, terwijl je tegelijkertijd wordt gewaarschuwd voor dingen die gebeuren zonder dat je erom hebt gevraagd. De manier om de waarschuwing te onderdrukken is om fuzzy linking expliciet te maken:
g++ -Wl,--enable-stdcall-fixup my.cpp -I D:\Opt\MySQL5.5\include ^
D:\Opt\MySQL5.5\lib\libmysql.dll -o myWithDll.exe
g++ -Wl,--enable-stdcall-fixup my.cpp -I D:\Opt\MySQL5.5\include ^
-L D:\Opt\MySQL5.5\lib -lmysql -o myWithLib.exe
Dit is een Cygwin/RedHat/MinGW-extensie van de linker; de documenten zijn hier :
--enable-stdcall-fixup
--disable-stdcall-fixup