Название: Создание объекта класса из API одного сервиса. Ошибки =(
Отправлено: ZeBriD от Сентября 22, 2009, 18:00
День или вечер добрый. Скачал API одного сервиса. При попытке создать объект одного из API классов , получаю несколько ошибок : tmp/mainwindow.o: In function `UserStoreClient': /path_to_project/api/UserStore.h:593: undefined reference to `vtable for evernote::edam::UserStoreClient' /path_to_project/api/UserStore.h:593: undefined reference to `vtable for evernote::edam::UserStoreClient' tmp/mainwindow.o: In function `~UserStoreClient': /path_to_project/api/UserStore.h:589: undefined reference to `vtable for evernote::edam::UserStoreClient' /path_to_project/api/UserStore.h:589: undefined reference to `vtable for evernote::edam::UserStoreClient' collect2: ld returned 1 exit status Объявляю переменную следущим образом: UserStoreClient userStore = UserStoreClient(userStoreProtocol); где переменная userStoreProtocol соответственно заранее определена. Посмотрел код класса - в нём нет виртуальных функций, которые надо было бы определить.... Собственно, сам класс UserStoreClient объявлен следущим образом: class UserStoreIf { public: virtual ~UserStoreIf() {} virtual bool checkVersion(const std::string& clientName, const int16_t edamVersionMajor, const int16_t edamVersionMinor) = 0; virtual void authenticate(AuthenticationResult& _return, const std::string& username, const std::string& password, const std::string& consumerKey, const std::string& consumerSecret) = 0; virtual void refreshAuthentication(AuthenticationResult& _return, const std::string& authenticationToken) = 0; virtual void getUser(evernote::edam::User& _return, const std::string& authenticationToken) = 0; virtual void getPublicUserInfo(PublicUserInfo& _return, const std::string& username) = 0; };
class UserStoreClient : virtual public UserStoreIf { public: UserStoreClient(boost::shared_ptr<apache::thrift::protocol::TProtocol> prot) : piprot_(prot), poprot_(prot) { iprot_ = prot.get(); oprot_ = prot.get(); } UserStoreClient(boost::shared_ptr<apache::thrift::protocol::TProtocol> iprot, boost::shared_ptr<apache::thrift::protocol::TProtocol> oprot) : piprot_(iprot), poprot_(oprot) { iprot_ = iprot.get(); oprot_ = oprot.get(); } boost::shared_ptr<apache::thrift::protocol::TProtocol> getInputProtocol() { return piprot_; } boost::shared_ptr<apache::thrift::protocol::TProtocol> getOutputProtocol() { return poprot_; } bool checkVersion(const std::string& clientName, const int16_t edamVersionMajor, const int16_t edamVersionMinor); void send_checkVersion(const std::string& clientName, const int16_t edamVersionMajor, const int16_t edamVersionMinor); bool recv_checkVersion(); void authenticate(AuthenticationResult& _return, const std::string& username, const std::string& password, const std::string& consumerKey, const std::string& consumerSecret); void send_authenticate(const std::string& username, const std::string& password, const std::string& consumerKey, const std::string& consumerSecret); void recv_authenticate(AuthenticationResult& _return); void refreshAuthentication(AuthenticationResult& _return, const std::string& authenticationToken); void send_refreshAuthentication(const std::string& authenticationToken); void recv_refreshAuthentication(AuthenticationResult& _return); void getUser(evernote::edam::User& _return, const std::string& authenticationToken); void send_getUser(const std::string& authenticationToken); void recv_getUser(evernote::edam::User& _return); void getPublicUserInfo(PublicUserInfo& _return, const std::string& username); void send_getPublicUserInfo(const std::string& username); void recv_getPublicUserInfo(PublicUserInfo& _return); protected: boost::shared_ptr<apache::thrift::protocol::TProtocol> piprot_; boost::shared_ptr<apache::thrift::protocol::TProtocol> poprot_; apache::thrift::protocol::TProtocol* iprot_; apache::thrift::protocol::TProtocol* oprot_; }; Подскажите, как таки избавиться от этих ошибок ???
Название: Re: Создание объекта класса из API одного сервиса. Ошибки =(
Отправлено: Tonal от Сентября 23, 2009, 08:20
Либки не подключены.
Название: Re: Создание объекта класса из API одного сервиса. Ошибки =(
Отправлено: ZeBriD от Сентября 23, 2009, 08:42
А не подскажите случаем, какие именно ? ::)
Название: Re: Создание объекта класса из API одного сервиса. Ошибки =(
Отправлено: ZeBriD от Сентября 23, 2009, 10:11
Собственно, долго копаясь дошёл вот до чего: Закоментил всё нафиг. Оставил только конструктор и определение вирт.методов предка с пустыми телами. Собралось без проблем. Начал раскоменчивать. Ошибка появляется когда у какого-либо из определённых методов убрать пустое тело. Соответственно, реализация имеется в соответствующем срр файле.
|