编译期间的SOCI未定义的参考错误

问题描述:

我试图让社会工作,并将我的代码基于他们的文档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

你需要对SOCI库和合适的后端链接。将“-lsoci”添加到链接器命令行。

更新:根据意见

,您需要添加:

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

到链接器的命令行。

+0

我只是试过和LD,我相信是连接器抱怨: “/ usr/bin/ld:找不到-lsoci” – Kevin 2011-01-25 00:43:12