使用MySQL C ++ Connector解析未定义的引用

时间:2012-11-12 17:24:47

标签: c++ mysql g++ mysql-connector

我正在尝试编译它(也在mysql c ++连接器文档中列出):http://pastebin.com/HLv4zR0r

但是我收到了这些错误:http://pastebin.com/3t0UbeFy

这是我尝试编译的方式:

g++ -o test test.cpp `mysql_config --cflags --libs` -I./include/cppconn -L./lib -lmysqlcppconn-static

运行mysql_config --cflags --libs的结果是:

-I/usr/include/mysql -DBIG_JOINS=1  -fno-strict-aliasing  -g
-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -ldl

编辑:

使用正确排序的链接器参数运行Jonathan Wakely的建议命令后,

g++ -o test test.cpp  -I./include/cppconn -L./lib -lmysqlcppconn-static `mysql_config --cflags --libs`

我得到了不同的错误:http://pastebin.com/4EWNgy9i

1 个答案:

答案 0 :(得分:0)

mysqlcppcon库依赖于mysqlclient C库,所以你需要在 -lmysqlcppconn-static之后放置mysqlclient libs

g++ -o test test.cpp  -I./include/cppconn -L./lib -lmysqlcppconn-static `mysql_config --cflags --libs`

链接器参数的顺序很重要。链接器按顺序查看每个文件,并确定它是否需要来自它的任何符号。当它看到libmysqlcppconn-static.a文件时,它已经查看(并忽略了)libmysqlclient.so库,并且不会再回头查看它。