Russian Qt Forum
Ноябрь 23, 2024, 11:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание объекта класса из API одного сервиса. Ошибки =(  (Прочитано 3191 раз)
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_;
};

Подскажите, как таки избавиться от этих ошибок Непонимающий
« Последнее редактирование: Сентябрь 22, 2009, 18:28 от ZeBriD » Записан
Tonal
Гость
« Ответ #1 : Сентябрь 23, 2009, 08:20 »

Либки не подключены.
Записан
ZeBriD
Гость
« Ответ #2 : Сентябрь 23, 2009, 08:42 »

А не подскажите случаем, какие именно ?  Строит глазки
Записан
ZeBriD
Гость
« Ответ #3 : Сентябрь 23, 2009, 10:11 »

Собственно, долго копаясь дошёл вот до чего:
Закоментил всё нафиг. Оставил только конструктор и определение вирт.методов предка с пустыми телами. Собралось без проблем.
Начал раскоменчивать. Ошибка появляется когда у какого-либо из определённых методов убрать пустое тело.
Соответственно, реализация имеется в соответствующем срр файле.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 21.