Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Referência indefinida para bibliotecas MySQL usando g++


Os comandos a seguir funcionam bem para mim usando um GCC 4.6.1 de novembro de 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

Portanto, ambos os links para a LIB e a DLL funcionam.

Você pode receber um aviso (veja o comentário de Gaffi). Isso ocorre porque o vinculador faz a vinculação difusa para você sem que você a tenha especificado; normalmente, ele teria falhado ao vincular. No entanto, é ser legal e fazer com que funcione para você, ao mesmo tempo em que avisa sobre as coisas que acontecem sem que você as tenha solicitado. A maneira de suprimir o aviso é tornar a vinculação difusa explícita:
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

Esta é uma extensão Cygwin/RedHat/MinGW para o vinculador; os documentos estão aqui :
--enable-stdcall-fixup
--disable-stdcall-fixup