是的這個問題已經問過...我已經嘗試了前面的答案中提到的一切。我的設置非常簡單,所以這不應該太難。C++/mysql連接器 - 未定義的引用get_driver_instance - 已經嘗試了簡單的東西
我只是想用C++編程對付mysql。我的源代碼是採取verbatem從「世界你好」類型這裏例如:
http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-complete-example-1.html
我在Ubuntu 12.10。我想:
g++ -Wall -o firsttry_prog -I/usr/include/mysqlcppconn -I/usr/local/boost_1_53_0 -L/usr/lib/x86_64-linux-gnu -l:libmysqlclient_r.so.18 -L/usr/lib/mysqlcppconn -lmysqlcppconn firsttry.cpp
它編譯(如果我使用-c選項),但不會建立,給我臭名昭著:
/tmp/ccn768hj.o: In function `main':
firsttry.cpp:(.text+0x3a): undefined reference to `get_driver_instance'
的一些細節:
- 'firsttry.cpp'正是我命名的源代碼文件,再次從官方示例中取出verbatem
- 正如你所見, mysqlclient庫和mysqlcppconn庫。很多時候,當這個問題被問到以前,答案就是把這些問題聯繫起來。
- 一些其他歷史答案表明示例源代碼是錯誤的,並且該問題的函數需要在sql :: mysql命名空間等。我很確定源代碼是好的。再次,它編譯,並且更改源代碼中的名稱空間似乎使情況變得更糟。
非常感謝您提供任何幫助。
那是什麼'-l:libmysqlclient_r.so.18'?它不應該是'-lmysqlclient_r'嗎? –
感謝Haroogan。我從[鏈接](http://stackoverflow.com/questions/335928/ld-cannot-find-an-existing-library)得到了--l:business - 我相信這只是一種指定完整文件名稱的方式,當傳統命名風格中的符號鏈接不存在,因爲它不適合我。所以如果我嘗試了-lmysqlclient_r,它告訴我它找不到-lmysqlclient_r。 根據您的反饋,我繼續前進並創建了符號鏈接,現在我可以使用-lmysqlclient_r ...並獲取與「get_driver_instance」相同的錯誤。任何其他想法? –
嘗試先將'firsttry.cpp'編譯爲'firsttry.o',然後將其與這些MySQL庫鏈接到可執行文件中。即像這樣:'g ++ -Wall -I/usr/include/mysqlcppconn -I/usr/local/boost_1_53_0 -o firsttry.o firsttry.cpp'和'g ++ firsttry.o -L/usr/lib/x86_64-linux-gnu -l:libmysqlclient_r.so.18 -L/usr/lib/mysqlcppconn -lmysqlcppconn -o firsttry'。 –