链接wt时未定义的对sql相关函数的引用

时间:2014-06-04 19:07:39

标签: c++ compilation linker static-libraries wt

命令:

g++ -o "webserver" ./webserver.o -lwtdbopostgres -lwtdbo -lwthttp -lwt -lboost_signals

可怕的,可怕的输出:

./webserver.o: In function `Wt::Dbo::Impl::QueryBase<Wt::Dbo::ptr<pool::db::Settings> >::statements(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int) const':
webserver.cpp (.text._ZNK2Wt3Dbo4Impl9QueryBaseINS0_3ptrIN4pool2db8SettingsEEEE10statementsERKSsSA_SA_ii[Wt::Dbo::Impl::QueryBase<Wt::Dbo::ptr<pool::db::Settings> >::statements(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int) const]+0x1b3): undefined reference to `Wt::Dbo::Impl::completeQuerySelectSql(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, std::vector<Wt::Dbo::FieldInfo, std::allocator<Wt::Dbo::FieldInfo> > const&, bool)'
webserver.cpp:(.text._ZNK2Wt3Dbo4Impl9QueryBaseINS0_3ptrIN4pool2db8SettingsEEEE10statementsERKSsSA_SA_ii[Wt::Dbo::Impl::QueryBase<Wt::Dbo::ptr<pool::db::Settings> >::statements(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int) const]+0x25c): undefined reference to `Wt::Dbo::Impl::createQueryCountSql(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, bool)'
Many, many more lines...

稍微提取错误消息:

undefined reference to `Wt::Dbo::Impl::completeQuerySelectSql
undefined reference to `Wt::Dbo::Impl::createQueryCountSql
undefined reference to `Wt::Dbo::Impl::createWrappedQueryCountSql
...

为什么找不到这些?它与-lwtdbo-lwtdbopostgres相关联,这是项目设置附带的内容。这是在我手动下载,编译和安装最新的wt版本之后。以前我使用apt-get得到它们并且我有一组不同的错误,但仍然未定义与引用相关。

1 个答案:

答案 0 :(得分:0)

libwtdbopostgres.so和libwtdbo.so可能不在您的库路径中。检查$ LD_LIBRARY_PATH以查看这些库所在的路径是否显示。

或者尝试使用-L来指定两个库的路径

即:

g++ -o "webserver" -L/home/libs ./webserver.o -lwtdbopostgres -lwtdbo... etc..