Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-3832

Thrift version 0.9.3 example on Windows, Visual Studio, linking errors during compiling

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 0.9.3
    • Fix Version/s: 0.11.0
    • Component/s: C++ - Library
    • Labels:
    • Environment:

      OS: Windows 7 x64
      Visual Studio: 2013, 2015
      Boost: 1.59.0 (i download already compiled binaries)
      Libevent: 2.0.22
      OpenSSL: 1.0.2h

      Description

      I have working projects of Thrift 0.9.3 Server+Client in C# and Node.JS; and also I have working Calculator example on C++ with 0.9.2 thrift (i used this guide to create it http://mohamednadjibmami.com/apache-thrift-for-c-on-visual-studio-2015/ )
      But when i tried to create Calculator example on C++ with 0.9.3 thrift, i get a lot of linking errors, for example in combination of Visual Studio 2015 + Boost 1.59.0 (x64), libevent 2.0.22, OpenSSL 1.0.2h (x64), thrift 0.9.3 (x64), CalculatorClient(x64) i have following errors:

      1>------ Перестроение всех файлов начато: проект: TestClient, Конфигурация: Debug x64 ------
      1> tutorial_types.cpp
      1> tutorial_constants.cpp
      1> shared_types.cpp
      1> shared_constants.cpp
      1> SharedService.cpp
      1> Calculator.cpp
      1> CppClient.cpp
      1> Создание кода...
      1>CppClient.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: virtual __cdecl apache::thrift::protocol::TProtocol::~TProtocol(void)" (??1TProtocol@protocol@thrift@apache@@UEAA@XZ) в функции "public: virtual __cdecl apache::thrift::protocol::TProtocolDefaults::~TProtocolDefaults(void)" (??1TProtocolDefaults@protocol@thrift@apache@@UEAA@XZ)
      1>CppClient.obj : error LNK2001: неразрешенный внешний символ ""public: virtual unsigned int __cdecl apache::thrift::protocol::TProtocol::skip_virt(enum apache::thrift::protocol::TType)" (?skip_virt@TProtocol@protocol@thrift@apache@@UEAAIW4TType@234@@Z)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl apache::thrift::TOutput::printf(char const *,...)" (?printf@TOutput@thrift@apache@@QEAAXPEBDZZ) в функции "public: virtual bool __cdecl apache::thrift::TDispatchProcessor::process(class boost::shared_ptr<class apache::thrift::protocol::TProtocol>,class boost::shared_ptr<class apache::thrift::protocol::TProtocol>,void *)" (?process@TDispatchProcessor@thrift@apache@@UEAA_NV?$shared_ptr@VTProtocol@protocol@thrift@apache@@@boost@@0PEAX@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: void __cdecl apache::thrift::TOutput::printf(char const *,...)" (?printf@TOutput@thrift@apache@@QEAAXPEBDZZ)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __cdecl apache::thrift::async::TConcurrentSendSentry::TConcurrentSendSentry(class apache::thrift::async::TConcurrentClientSyncInfo *)" (??0TConcurrentSendSentry@async@thrift@apache@@QEAA@PEAVTConcurrentClientSyncInfo@123@@Z) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::send_add(int,int)" (?send_add@CalculatorConcurrentClient@tutorial@@QEAAHHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: __cdecl apache::thrift::async::TConcurrentSendSentry::TConcurrentSendSentry(class apache::thrift::async::TConcurrentClientSyncInfo *)" (??0TConcurrentSendSentry@async@thrift@apache@@QEAA@PEAVTConcurrentClientSyncInfo@123@@Z)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __cdecl apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry(void)" (??1TConcurrentSendSentry@async@thrift@apache@@QEAA@XZ) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::send_add(int,int)" (?send_add@CalculatorConcurrentClient@tutorial@@QEAAHHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: __cdecl apache::thrift::async::TConcurrentSendSentry::~TConcurrentSendSentry(void)" (??1TConcurrentSendSentry@async@thrift@apache@@QEAA@XZ)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl apache::thrift::async::TConcurrentSendSentry::commit(void)" (?commit@TConcurrentSendSentry@async@thrift@apache@@QEAAXXZ) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::send_add(int,int)" (?send_add@CalculatorConcurrentClient@tutorial@@QEAAHHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: void __cdecl apache::thrift::async::TConcurrentSendSentry::commit(void)" (?commit@TConcurrentSendSentry@async@thrift@apache@@QEAAXXZ)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __cdecl apache::thrift::async::TConcurrentRecvSentry::TConcurrentRecvSentry(class apache::thrift::async::TConcurrentClientSyncInfo *,int)" (??0TConcurrentRecvSentry@async@thrift@apache@@QEAA@PEAVTConcurrentClientSyncInfo@123@H@Z) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::recv_add(int)" (?recv_add@CalculatorConcurrentClient@tutorial@@QEAAHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: __cdecl apache::thrift::async::TConcurrentRecvSentry::TConcurrentRecvSentry(class apache::thrift::async::TConcurrentClientSyncInfo *,int)" (??0TConcurrentRecvSentry@async@thrift@apache@@QEAA@PEAVTConcurrentClientSyncInfo@123@H@Z)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __cdecl apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry(void)" (??1TConcurrentRecvSentry@async@thrift@apache@@QEAA@XZ) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::recv_add(int)" (?recv_add@CalculatorConcurrentClient@tutorial@@QEAAHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: __cdecl apache::thrift::async::TConcurrentRecvSentry::~TConcurrentRecvSentry(void)" (??1TConcurrentRecvSentry@async@thrift@apache@@QEAA@XZ)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl apache::thrift::async::TConcurrentRecvSentry::commit(void)" (?commit@TConcurrentRecvSentry@async@thrift@apache@@QEAAXXZ) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::recv_add(int)" (?recv_add@CalculatorConcurrentClient@tutorial@@QEAAHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: void __cdecl apache::thrift::async::TConcurrentRecvSentry::commit(void)" (?commit@TConcurrentRecvSentry@async@thrift@apache@@QEAAXXZ)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __cdecl apache::thrift::async::TConcurrentClientSyncInfo::generateSeqId(void)" (?generateSeqId@TConcurrentClientSyncInfo@async@thrift@apache@@QEAAHXZ) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::send_add(int,int)" (?send_add@CalculatorConcurrentClient@tutorial@@QEAAHHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: int __cdecl apache::thrift::async::TConcurrentClientSyncInfo::generateSeqId(void)" (?generateSeqId@TConcurrentClientSyncInfo@async@thrift@apache@@QEAAHXZ)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: bool __cdecl apache::thrift::async::TConcurrentClientSyncInfo::getPending(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,enum apache::thrift::protocol::TMessageType &,int &)" (?getPending@TConcurrentClientSyncInfo@async@thrift@apache@@QEAA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAW4TMessageType@protocol@34@AEAH@Z) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::recv_add(int)" (?recv_add@CalculatorConcurrentClient@tutorial@@QEAAHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: bool __cdecl apache::thrift::async::TConcurrentClientSyncInfo::getPending(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,enum apache::thrift::protocol::TMessageType &,int &)" (?getPending@TConcurrentClientSyncInfo@async@thrift@apache@@QEAA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAW4TMessageType@protocol@34@AEAH@Z)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl apache::thrift::async::TConcurrentClientSyncInfo::updatePending(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,enum apache::thrift::protocol::TMessageType,int)" (?updatePending@TConcurrentClientSyncInfo@async@thrift@apache@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@W4TMessageType@protocol@34@H@Z) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::recv_add(int)" (?recv_add@CalculatorConcurrentClient@tutorial@@QEAAHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: void __cdecl apache::thrift::async::TConcurrentClientSyncInfo::updatePending(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,enum apache::thrift::protocol::TMessageType,int)" (?updatePending@TConcurrentClientSyncInfo@async@thrift@apache@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@W4TMessageType@protocol@34@H@Z)"
      1>Calculator.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl apache::thrift::async::TConcurrentClientSyncInfo::waitForWork(int)" (?waitForWork@TConcurrentClientSyncInfo@async@thrift@apache@@QEAAXH@Z) в функции "public: int __cdecl tutorial::CalculatorConcurrentClient::recv_add(int)" (?recv_add@CalculatorConcurrentClient@tutorial@@QEAAHH@Z)
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""public: void __cdecl apache::thrift::async::TConcurrentClientSyncInfo::waitForWork(int)" (?waitForWork@TConcurrentClientSyncInfo@async@thrift@apache@@QEAAXH@Z)"
      1>Calculator.obj : error LNK2001: неразрешенный внешний символ ""class apache::thrift::TOutput apache::thrift::GlobalOutput" (?GlobalOutput@thrift@apache@@3VTOutput@12@A)"
      1>SharedService.obj : error LNK2001: неразрешенный внешний символ ""class apache::thrift::TOutput apache::thrift::GlobalOutput" (?GlobalOutput@thrift@apache@@3VTOutput@12@A)"
      1>libthrift.lib(TSocket.obj) : error LNK2001: неразрешенный внешний символ ""class apache::thrift::TOutput apache::thrift::GlobalOutput" (?GlobalOutput@thrift@apache@@3VTOutput@12@A)"
      1>libthrift.lib(TSocket.obj) : error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl apache::thrift::TOutput::perror(char const *,int)" (?perror@TOutput@thrift@apache@@QEAAXPEBDH@Z) в функции "protected: void __cdecl apache::thrift::transport::TSocket::openConnection(struct addrinfo *)" (?openConnection@TSocket@transport@thrift@apache@@IEAAXPEAUaddrinfo@@@Z)
      1>libthrift.lib(TSocket.obj) : error LNK2019: ссылка на неразрешенный внешний символ "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) в функции "public: __cdecl apache::thrift::transport::TTransportException::TTransportException(enum apache::thrift::transport::TTransportException::TTransportExceptionType,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (??0TTransportException@transport@thrift@apache@@QEAA@W4TTransportExceptionType@0123@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z)
      1>C:\ThriftTest\093\vs2015\093git_boost59\thriftTest\TestClient\TestClient\x64\Debug\TestClient.exe : fatal error LNK1120: неразрешенных внешних элементов: 16
      ========== Перестроение всех проектов: успешно: 0, с ошибками: 1, пропущено: 0 ==========

      P.S.: by the way i noticed, that in 0.9.3 version of thrift there is no source file Thrift.cpp.

      Tell me please, is there anything what i'm doing wrong?

        Attachments

        1. Errors.txt
          11 kB
          Vladimir

          Issue Links

            Activity

              People

              • Assignee:
                jking3 James E. King III
                Reporter:
                vrastrigin Vladimir
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: