在使用Wt::Dbo库时,如果妳忘记包含 <Wt/Dbo/Dbo>这个头文件,那么就会遇到以下的编译错误:
UserVerifyWidget.o: In function `UserVerifyWidget::ListUsersAwaitingVerify()':
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:30: undefined reference to `void Wt::Dbo::Session::mapClass<ManagedUser>(char const*)'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:36: undefined reference to `Wt::Dbo::Query<Wt::Dbo::ptr<ManagedUser>, Wt::Dbo::DynamicBinding>::where(std::string const&)'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:36: undefined reference to `Wt::Dbo::Query<Wt::Dbo::ptr<ManagedUser>, Wt::Dbo::DynamicBinding>& Wt::Dbo::Query<Wt::Dbo::ptr<ManagedUser>, Wt::Dbo::DynamicBinding>::bind<int>(int const&)'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:36: undefined reference to `Wt::Dbo::Query<Wt::Dbo::ptr<ManagedUser>, Wt::Dbo::DynamicBinding>::operator Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >() const'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:36: undefined reference to `Wt::Dbo::Query<Wt::Dbo::ptr<ManagedUser>, Wt::Dbo::DynamicBinding>::~Query()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:38: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::size() const'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::begin()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::const_iterator::const_iterator(Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::iterator const&)'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::iterator::~iterator()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:43: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::const_iterator::operator*()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:43: undefined reference to `Wt::Dbo::ptr<ManagedUser>::operator->() const'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:43: undefined reference to `Wt::Dbo::ptr<ManagedUser>::~ptr()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:44: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::const_iterator::operator*()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:44: undefined reference to `Wt::Dbo::ptr<ManagedUser>::operator->() const'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:44: undefined reference to `Wt::Dbo::ptr<ManagedUser>::~ptr()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::const_iterator::operator++()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::end()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::const_iterator::const_iterator(Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::iterator const&)'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::const_iterator::operator!=(Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::const_iterator const&) const'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::iterator::~iterator()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:50: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::~collection()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:36: undefined reference to `Wt::Dbo::Query<Wt::Dbo::ptr<ManagedUser>, Wt::Dbo::DynamicBinding>::~Query()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:36: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::~collection()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:36: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::~collection()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:36: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::~collection()'
make: Leaving directory `/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::iterator::~iterator()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:43: undefined reference to `Wt::Dbo::ptr<ManagedUser>::~ptr()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:44: undefined reference to `Wt::Dbo::ptr<ManagedUser>::~ptr()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:41: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::iterator::~iterator()'
/Poi/Qt/AndroidChargeProject/MasterWeb-build-Desktop-Debug/../MasterWeb/UserVerifyWidget.cpp:50: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::~collection()'
UserVerifyWidget.o: In function `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::const_iterator::~const_iterator()':
/usr/include/Wt/Dbo/collection:186: undefined reference to `Wt::Dbo::collection<Wt::Dbo::ptr<ManagedUser> >::iterator::~iterator()'
UserVerifyWidget.o: In function `Wt::Dbo::Query<Wt::Dbo::ptr<ManagedUser>, Wt::Dbo::DynamicBinding> Wt::Dbo::Session::find<ManagedUser>(std::string const&)':
/usr/include/Wt/Dbo/Session:159: undefined reference to `Wt::Dbo::Query<Wt::Dbo::ptr<ManagedUser>, Wt::Dbo::DynamicBinding> Wt::Dbo::Session::find<ManagedUser, Wt::Dbo::DynamicBinding>(std::string const&)'
collect2: error: ld returned 1 exit status
make: *** [MasterWeb] Error 1
可能跟<Wt/Dbo/Dbo>里定义的某些模板有关 ,具体的原因要研究一下这个头文件才知道。
模板真是晦涩难 懂啊。
解决办法 就是包含<Wt/Dbo/Dbo> 。
如果 妳要用Wt::Dbo库,就别忘记包含<Wt/Dbo/Dbo>。
邓上文
HxLauncher: Launch Android applications by voice commands