Có câu hỏi này đã được hỏi trước đây ... Tôi đã thử mọi thứ được đề cập trong các câu trả lời trước. Thiết lập của tôi thực sự đơn giản nên điều này không quá khó.C++/mysql Connector - tham chiếu không xác định đến get_driver_instance - đã thử công cụ dễ dàng
Tôi chỉ muốn chương trình chống lại mysql bằng C++. mã nguồn của tôi được lấy verbatem từ 'hello world' loại ví dụ ở đây:
http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-complete-example-1.html
tôi trên Ubuntu 12.10. Tôi đang cố gắng:
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
Nó biên dịch (nếu tôi sử dụng tùy chọn -c) nhưng sẽ không xây dựng, đem lại cho tôi khét tiếng:
/tmp/ccn768hj.o: In function `main':
firsttry.cpp:(.text+0x3a): undefined reference to `get_driver_instance'
Một vài chi tiết:
- 'firsttry.cpp' chỉ là những gì tôi đã đặt tên cho tệp mã nguồn, một lần nữa lấy verbatem từ ví dụ chính thức
- Như bạn có thể thấy I AM liên kết trong thư viện mysqlclient và thư viện mysqlcppconn. Nhiều khi câu hỏi này được hỏi trước đây, câu trả lời là liên kết chúng.
- Một số câu trả lời lịch sử khác cho thấy mã nguồn mẫu sai và chức năng đang được đề cập cần phải ở trong sql :: không gian tên mysql, v.v. Tôi khá chắc chắn rằng mã nguồn là tốt. Một lần nữa, nó biên dịch và thay đổi các không gian tên trong mã nguồn dường như làm cho nó tồi tệ hơn.
Cảm ơn bạn trước vì bất kỳ trợ giúp nào bạn có thể cung cấp.
gì mà '-l: libmysqlclient_r.so.18'? Nó không phải là '-lmysqlclient_r'? –
Cảm ơn Haroogan. Tôi nhận được rằng -l: kinh doanh từ [link] (http://stackoverflow.com/questions/335928/ld-cannot-find-an-existing-library) - Tôi tin rằng nó chỉ là một cách để chỉ định một tên tập tin đầy đủ khi một liên kết tượng trưng trong phong cách đặt tên thông thường không tồn tại, vì nó không dành cho tôi. Vì vậy, nếu tôi đã thử -lmysqlclient_r, nó nói với tôi nó không thể tìm thấy -lmysqlclient_r. Dựa trên phản hồi của bạn, tôi đã tiếp tục và tạo liên kết tượng trưng, bây giờ tôi có thể sử dụng -lmysqlclient_r ... và tôi gặp lỗi tương tự về 'get_driver_instance'. Bất kỳ suy nghĩ nào khác? –
Cố gắng biên dịch 'firsttry.cpp' thành' firsttry.o' trước, và sau đó liên kết nó với các thư viện MySQL đó vào tệp thực thi. I E. như thế này: 'g ++ -Wall -I/usr/include/mysqlcppconn -I/usr/local/boost_1_53_0 -o firsttry.o firsttry.cpp' và' g ++ firsttry.o -L/usr/lib/x86_64-linux-gnu -l: libmysqlclient_r.so.18 -L/usr/lib/mysqlcppconn -lmysqlcppconn -o firsttry'. –