2012-11-12 73 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