Apache Thrift неопределенная ссылка на vtable в сгенерированном коде - PullRequest
0 голосов
/ 13 ноября 2018

Я использую Apache Thrift в проекте.Я сгенерировал код для клиента.Когда я пытаюсь скомпилировать, я получаю набор похожих ошибок компоновщика:

undefined reference to `vtable for com::cybersecwise::thrift::ElasticFSServiceClient'

Я получил ту же ошибку при попытке реализовать конструктор с использованием разрешения области действия точки, но я смог избавиться от него, реализовавэто в файле hpp.То есть следующий код:

ElasticFSThriftClient(const string& server, int port) {
  stdcxx::shared_ptr<TTransport> socket(new TSocket(server, port));
  stdcxx::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
  stdcxx::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
  ElasticFSServiceClient client(protocol);
}

Теперь проблема в том, что я создаю экземпляр класса и снова получаю неопределенную ссылку на vtable.

Мне известно, что эта ошибка связанакогда объявления не определены для виртуальных функций.Дело в том, что, похоже, он прекрасно компилируется, пока я не создаю экземпляр объекта.

ElasticFSThriftClient elasticFsClient("localhost", 9090);

1 Ответ

0 голосов
/ 13 ноября 2018

Это было на самом деле довольно просто.Я забыл добавить сгенерированные файлы кода при компиляции проекта.

...