2011-01-24 7 views
2

私は社会作業をしようとしており、自分のコードはドキュメントhereに基づいています。私は解読できないというエラーが出ています。コンパイル中のSOCI未定義リファレンスエラー

マイコード:

// relevant imports 
using namespace soci; 
using namespace std; 
int main(int argc, char** argv) { 
    string dbName = "mysql"; 
    string options = "dbname=db user=root password=abc"; 
    try { 
     session sql(dbName, options); // this is line 22 
    } catch (exception e) { 
     printf("%s", e.what()); 
    } 
    printf("working"); 
    return 0; 
} 

エラー:

build/Debug/GNU-Linux-x86/main.o: In function `main': 
/home/kevin/Dropbox/bamboo/main.cpp:22: undefined reference to 
`soci::session::session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' 
/home/kevin/Dropbox/bamboo/main.cpp:22: undefined reference to `soci::session::~session()' 
+0

"未定義の参照"はリンカエラーです。適切な図書館にリンクしましたか? – fredoverflow

答えて

0

あなたはSOCIライブラリと適切なバックエンドにリンクする必要があります。リンカのコマンドラインに "-lsoci"を追加してください。

更新:

-L/usr/local/lib -lsoci_core -lsoci_mysql 

あなたのリンカコマンドラインに:

コメントに基づいて、あなたが追加する必要があります。

+0

私はちょうどそれとldを試しましたが、リンカが苦情を言っていると信じています: "/ usr/bin/ld:-lsociを見つけることができません" – Kevin

+0

次に、-Lオプションを使用して、 libsoci.a) – janm

+0

libsoci_core.aとlibsoci_mysql.aの両方が/ usr/local/lib /にあります。これは、リンカが指定せずにチェックするためのかなり標準的な場所のようです。 -L/usr/local/lib/anywaysを使用しましたが、まだエラーがあります。 – Kevin

関連する問題