Qt Client Compilation Error
От: Myafka  
Дата: 26.04.16 09:34
Оценка:
Всем привет!
Пытаюсь создать клиент по примеру — https://thrift.apache.org/tutorial/cpp.

Возникает несколько ошибок:
— main.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual __thiscall apache::thrift::protocol::TProtocol::~TProtocol(void)" (??1TProtocol@protocol@thrift@apache@@UAE@XZ)"

— main.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual unsigned int __thiscall apache::thrift::protocol::TProtocol::skip_virt(enum apache::thrift::protocol::TType)" (?skip_virt@TProtocol@protocol@thrift@apache@@UAEIW4TType@234@@Z)"

— libthrift.lib(TSocket.obj):-1: ошибка: LNK2001: неразрешенный внешний символ ""class apache::thrift::TOutput apache::thrift::GlobalOutput" (?GlobalOutput@thrift@apache@@3VTOutput@12@A)"

— libthrift.lib(TSocket.obj):-1: ошибка: LNK2001: неразрешенный внешний символ ""public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl apache::thrift::TOutput::strerror_s(int)" (?strerror_s@TOutput@thrift@apache@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z)"

— libthrift.lib(TSocket.obj):-1: ошибка: LNK2001: неразрешенный внешний символ ""public: void __thiscall apache::thrift::TOutput::perror(char const *,int)" (?perror@TOutput@thrift@apache@@QAEXPBDH@Z)"

В файле .pro прописаны все папки к библиотекам
INCLUDEPATH += ".../gen-cpp"
INCLUDEPATH += ".../thrift"
INCLUDEPATH += ".../boost"

LIBS += -LC:/boost/stage/lib -llibboost_system-vc120-mt-gd-1_60

Прописаны пути к библиотекам трифта libthrift и libthriftnb:

LIBS += -LC:/Thrift/thrift-0.9.3/thrift-0.9.3/lib/cpp/Release -llibthriftnb
LIBS += -LC:/Thrift/thrift-0.9.3/thrift-0.9.3/lib/cpp/Release -llibthrift

Библиотеки собраны компилятором MSVC. Клиент собираю тоже MSVC. Сервер запущен.
Re: Qt Client Compilation Error
От: Chorkov Россия  
Дата: 26.04.16 10:17
Оценка:
Здравствуйте, Myafka, Вы писали:

M>Всем привет!

M>Пытаюсь создать клиент по примеру — https://thrift.apache.org/tutorial/cpp.

M>Возникает несколько ошибок:

M>- main.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual __thiscall apache::thrift::protocol::TProtocol::~TProtocol(void)" (??1TProtocol@protocol@thrift@apache@@UAE@XZ)"
M>...

1) из *.pro файла делаешь Makefile или проект студии?
2) в Makefile/проекте проверить что либа llibthrift действительно в списке либ для линковки.
3) проверить список символов в llibthrift. (с помощью dumpbin).
Найти в нем символ ??1TProtocol@protocol@thrift@apache@@UAE@XZ.
Если символа не, то поискать похожий (отличающийся одной-двумя буквами), это означает что библиотека собрана с другими опциями компилятора.
Re[2]: Qt Client Compilation Error
От: Myafka  
Дата: 28.04.16 07:37
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>Здравствуйте, Myafka, Вы писали:


M>>Всем привет!

M>>Пытаюсь создать клиент по примеру — https://thrift.apache.org/tutorial/cpp.

M>>Возникает несколько ошибок:

M>>- main.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual __thiscall apache::thrift::protocol::TProtocol::~TProtocol(void)" (??1TProtocol@protocol@thrift@apache@@UAE@XZ)"
M>>...

C>1) из *.pro файла делаешь Makefile или проект студии?

C>2) в Makefile/проекте проверить что либа llibthrift действительно в списке либ для линковки.
C>3) проверить список символов в llibthrift. (с помощью dumpbin).
C> Найти в нем символ ??1TProtocol@protocol@thrift@apache@@UAE@XZ.
C> Если символа не, то поискать похожий (отличающийся одной-двумя буквами), это означает что библиотека собрана с другими опциями компилятора.

1) Makefile
2) библиотека libthrift есть в списке библиотек для линковки
3) Такого символа нет (??1TProtocol@protocol@thrift@apache@@UAE@XZ), но есть похожий.

Спасибо. Я так понимаю надо пересобрать библиотеку.
Re[3]: Qt Client Compilation Error
От: Myafka  
Дата: 29.04.16 09:32
Оценка:
Здравствуйте, Myafka, Вы писали:

M>Здравствуйте, Chorkov, Вы писали:


C>>Здравствуйте, Myafka, Вы писали:


M>>>Всем привет!

M>>>Пытаюсь создать клиент по примеру — https://thrift.apache.org/tutorial/cpp.

M>>>Возникает несколько ошибок:

M>>>- main.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual __thiscall apache::thrift::protocol::TProtocol::~TProtocol(void)" (??1TProtocol@protocol@thrift@apache@@UAE@XZ)"
M>>>...

C>>1) из *.pro файла делаешь Makefile или проект студии?

C>>2) в Makefile/проекте проверить что либа llibthrift действительно в списке либ для линковки.
C>>3) проверить список символов в llibthrift. (с помощью dumpbin).
C>> Найти в нем символ ??1TProtocol@protocol@thrift@apache@@UAE@XZ.
C>> Если символа не, то поискать похожий (отличающийся одной-двумя буквами), это означает что библиотека собрана с другими опциями компилятора.

M>1) Makefile

M>2) библиотека libthrift есть в списке библиотек для линковки
M>3) Такого символа нет (??1TProtocol@protocol@thrift@apache@@UAE@XZ), но есть похожий.

M>Спасибо. Я так понимаю надо пересобрать библиотеку.
Re[4]: Qt Client Compilation Error
От: Myafka  
Дата: 29.04.16 09:35
Оценка:
C какими опциями компилятора необходимо собрать библиотеку libthrift?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.