2012-11-12 41 views
2

我试图编译这个未定义的引用(也列在MySQL的C++连接器文档):http://pastebin.com/HLv4zR0r解决与MySQL的C++连接器

但我得到这些错误: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 

编辑:

运行与正常有序链接程序参数乔纳森Wakely建议的命令后,

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

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

回答

0

的mysqlcppcon库依赖的mysql C库,所以你需要把mysqlclient库-lmysqlcppconn-static

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

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

+0

谢谢Jonathan Wakely。我注意到在使用cc的示例[here](http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html#samplecode)中的顺序是不同的,所以这个顺序是特定的到gcc/g ++,对吗?无论如何,我仍然得到[(不同)错误](http://pastebin.com/4EWNgy9i),所以也许我错过了什么? – user1818802