2011-01-24 64 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 2011-01-24 22:40:42

回答

0

你需要對SOCI庫和合適的後端鏈接。將「-lsoci」添加到鏈接器命令行。

更新:根據意見

,您需要添加:

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

到鏈接器的命令行。

+0

我只是試過和LD,我相信是連接器抱怨: 「/ usr/bin/ld:找不到-lsoci」 – Kevin 2011-01-25 00:43:12