Die folgenden Befehle funktionieren gut für mich mit einem GCC 4.6.1 von 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
Also funktioniert sowohl das Verlinken mit der LIB als auch mit der DLL.
Möglicherweise erhalten Sie eine Warnung (siehe Kommentar von Gaffi). Dies liegt daran, dass der Linker Fuzzy-Linking für Sie durchführt, ohne dass Sie es angegeben haben; normalerweise wäre die Verknüpfung fehlgeschlagen. Es ist jedoch nett und sorgt dafür, dass es für Sie funktioniert, und warnt Sie gleichzeitig vor Dingen, die passieren, ohne dass Sie darum gebeten haben. Die Möglichkeit, die Warnung zu unterdrücken, besteht darin, die Fuzzy-Verknüpfung explizit zu machen:
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
Dies ist eine Cygwin/RedHat/MinGW-Erweiterung für den Linker; Die Dokumentation ist hier :
--enable-stdcall-fixup
--disable-stdcall-fixup