2012-02-22 31 views
21

SQLiteのC++ APIを使い始めようとしています。間違っている可能性が何エラー: `sqlite3_open 'への未定義の参照

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

#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; 
} 

次のエラーを与える "G ++ main.cppにする" コマンドを使用して、これをコンパイルしますか?私はこれをコンパイルしているサーバーにsqlite3が正しくインストールされていませんか?

+0

あなたはどのようなコンパイラのプラットフォームを使用していますか? sqlite.cをビルドしてプログラムに含めるようにしてください。 +あなたの接続を閉じることを忘れないでください... – ixe013

答えて

29

あなたはあなたのプログラムと一緒にsqlite3のライブラリをリンクする必要があります。

g++ main.cpp -lsqlite3 
+0

それは動作します!啓発に感謝します! – thameera

+0

Android環境では、これによって次のような結果が表示されました:致命的なエラー: 'jni.h'ファイルが見つかりません – Charlie

2

あなたはsqlite3のライブラリにリンクするためにあなたのリンカのフラグを調整する必要があります。ライブラリは通常は/ usr/libにインストールまたは/ usr/lib64に

また、あなたのプロジェクトのディレクトリにsqlite3.cファイルをコピーして、G ++コマンドの一部としてコンパイルすることができますされています

グラム++ main.cppにあたりとしてsqlite3.c

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

+0

サイトには、古い情報が含まれているというメッセージが表示され、このページに移動します:http://sqlite.org/cvstrac/wiki? p = HowToCompile –

関連する問題