Mysql
 sql >> Database >  >> RDS >> Mysql

Riferimento non definito alle librerie MySQL che utilizzano g++

I seguenti comandi funzionano bene per me utilizzando un GCC 4.6.1 di novembre 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

Quindi entrambi i collegamenti con la LIB e la DLL funzionano.

Potresti ricevere un avviso (vedi il commento di Gaffi). Questo perché il linker esegue il collegamento fuzzy per te senza che tu lo abbia specificato; normalmente, non sarebbe riuscito a collegarsi. È essere carino, però, e farlo funzionare per te, allo stesso tempo avvisarti di cose che accadono senza che tu le abbia richieste. Il modo per eliminare l'avviso è rendere esplicito il collegamento fuzzy:

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

Questa è un'estensione Cygwin/RedHat/MinGW al linker; i documenti sono qui :

--enable-stdcall-fixup
--disable-stdcall-fixup