Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Undefinierter Verweis auf MySQL-Bibliotheken mit g++

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