使用MySQL C+解析未定义的引用+;连接器 我试图编译这个(也在MySQL C++连接器文档中列出):
但我有以下错误: 以下是我尝试编译的方式:使用MySQL C+解析未定义的引用+;连接器 我试图编译这个(也在MySQL C++连接器文档中列出):,c++,mysql,g++,mysql-connector,C++,Mysql,G++,Mysql Connector,但我有以下错误: 以下是我尝试编译的方式: g++ -o test test.cpp `mysql_config --cflags --libs` -I./include/cppconn -L./lib -lmysqlcppconn-static 运行mysql\u config--cflags--libs的结果是: -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g -L/usr/lib/x86_64-linux-gnu
g++ -o test test.cpp `mysql_config --cflags --libs` -I./include/cppconn -L./lib -lmysqlcppconn-static
运行mysql\u 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`
我得到了不同的错误:mysqlcppcon库依赖于mysqlclient C库,因此需要将mysqlclient libs放在
-lmysqlcpcconn static
g++ -o test test.cpp -I./include/cppconn -L./lib -lmysqlcppconn-static `mysql_config --cflags --libs`
链接器参数的顺序很重要。链接器按顺序查看每个文件,并决定是否需要其中的任何符号。当它看到
libmysqlcppcconn static.a
文件时,它已经查看(并忽略)libmysqlclient.so库,不再回头查看它。谢谢Jonathan Wakely。我注意到示例中的顺序是不同的,其中使用了cc,所以这种顺序是特定于gcc/g++,对吗?不管怎么说,我还是很紧张,所以也许我错过了什么?