2012-02-22 38 views
21

Tôi đang cố gắng bắt đầu với API C++ cho SQLite.Lỗi: tham chiếu không xác định đối với `sqlite3_open '

#include <iostream> 
#include <sqlite3.h> 

using namespace std; 

int main() 
{ 
    sqlite3 *db; 
    if (sqlite3_open("ex1.db", &db) == SQLITE_OK) 
     cout << "Opened db successfully\n"; 
    else 
     cout << "Failed to open db\n"; 

    return 0; 
} 

Biên dịch này bằng cách sử dụng lệnh "g ++ main.cpp" cung cấp cho các lỗi sau:

/tmp/ccu8sv4b.o: In function `main': 
main.cpp:(.text+0x64): undefined reference to `sqlite3_open' 
collect2: ld returned 1 exit status 

gì có thể đi sai? Đã không sqlite3 cài đặt đúng trong máy chủ tôi đang biên dịch này trong?

+0

Bạn đang sử dụng nền tảng trình biên dịch nào? Hãy chắc chắn rằng bạn xây dựng sqlite.c và bao gồm nó với chương trình của bạn. + Đừng quên đóng kết nối của bạn ... – ixe013

Trả lời

29

Bạn cần liên kết các thư viện sqlite3 cùng với chương trình của bạn:

g++ main.cpp -lsqlite3 
+0

Nó hoạt động! Cảm ơn vì đã khai sáng! – thameera

+0

Trong môi trường Android, điều này khiến tôi thấy: lỗi nghiêm trọng: không tìm thấy tệp 'jni.h' – Charlie

2

Bạn cần phải điều chỉnh cờ mối liên kết của bạn để liên kết trong thư viện sqlite3. Thư viện thường được cài đặt trong/usr/lib hoặc/usr/lib64

Ngoài ra, bạn có thể sao chép các tập tin vào thư mục sqlite3.c dự án của bạn và biên dịch nó như một phần của g ++ lệnh:

g ++ main.cpp sqlite3.c

theo: http://sqlite.org/cvstrac/wiki?p=HowToCompile

+0

Trang web cho biết trang chứa thông tin lỗi thời, hướng người dùng đến trang này: http://sqlite.org/cvstrac/wiki? p = HowToCompile –

Các vấn đề liên quan