[ 
https://issues.apache.org/jira/browse/THRIFT-3810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15266465#comment-15266465
 ] 

James E. King, III commented on THRIFT-3810:
--------------------------------------------

The unit tests all link and pass on Windows and some depend on that code too, 
however they all might be using static linking.

Could you post your entire (cleaned) example including the project?
I'm wondering if this is a declspec(dllexport) type of issue since it is on 
Windows.


> unresolved external symbol "public: virtual void __cdecl 
> apache::thrift::server::TServerFramework::serve(void)" 
> (?serve@TServerFramework@server@thrift@apache@@UEAAXXZ)
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-3810
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3810
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.9.3
>         Environment: Virtual studio 2013 and windows 7
>            Reporter: zengraoli
>
> {color:red}
> $. add TestServer.thrift
> {color}
> {code}
> namespace cpp zam.thrift.test
> namespace py thriftTest
> namespace java com.zam.thrift.test
> namespace php thriftTest
> service Hello {  
>     string helloString(1:string word)  
> }
> {code}
> {color:red}
> $. compile TestServer.thrift
> {color}
> {code}
> thrift --strict --gen cpp --out . TestServer.thrift
> {code}
> {color:red}
> $. copy build c++ code in Visual Studio and run, tips unresolved external 
> symbol :
> {color}
> {code}
> "public: virtual void __cdecl 
> apache::thrift::server::TServerFramework::serve(void)" 
> (?serve@TServerFramework@server@thrift@apache@@UEAAXXZ)
> "public: virtual void __cdecl 
> apache::thrift::server::TServerFramework::serve(void)" 
> (?serve@TServerFramework@server@thrift@apache@@UEAAXXZ)
> "public: __cdecl 
> apache::thrift::server::TServerFramework::TServerFramework(class 
> boost::shared_ptr<class apache::thrift::TProcessorFactory> const &,class 
> boost::shared_ptr<class apache::thrift::transport::TServerTransport> const 
> &,class boost::shared_ptr<class apache::thrift::transport::TTransportFactory> 
> const &,class boost::shared_ptr<class 
> apache::thrift::protocol::TProtocolFactory> const &)" 
> (??0TServerFramework@server@thrift@apache@@QEAA@AEBV?$shared_ptr@VTProcessorFactory@thrift@apache@@@boost@@AEBV?$shared_ptr@VTServerTransport@transport@thrift@apache@@@5@AEBV?$shared_ptr@VTTransportFactory@transport@thrift@apache@@@5@AEBV?$shared_ptr@VTProtocolFactory@protocol@thrift@apache@@@5@@Z),该符号在函数
>  "public: __cdecl apache::thrift::server::TSimpleServer::TSimpleServer(class 
> boost::shared_ptr<class apache::thrift::TProcessorFactory> const &,class 
> boost::shared_ptr<class apache::thrift::transport::TServerTransport> const 
> &,class boost::shared_ptr<class apache::thrift::transport::TTransportFactory> 
> const &,class boost::shared_ptr<class 
> apache::thrift::protocol::TProtocolFactory> const &)" 
> (??0TSimpleServer@server@thrift@apache@@QEAA@AEBV?$shared_ptr@VTProcessorFactory@thrift@apache@@@boost@@AEBV?$shared_ptr@VTServerTransport@transport@thrift@apache@@@5@AEBV?$shared_ptr@VTTransportFactory@transport@thrift@apache@@@5@AEBV?$shared_ptr@VTProtocolFactory@protocol@thrift@apache@@@5@@Z)
> {code}
> {color:red}
> $.why error is occur of TServerFramework file?
> {color}
> {color:red}
> $.main code:
> {color}
> {code}
> #include "hello.h"
> #include <Thrift.h>
> #include <thrift/Thrift.h>
> #include <thrift/protocol/TBinaryProtocol.h>
> #include <thrift/server/TSimpleServer.h>
> #include <thrift/transport/TServerSocket.h>
> #include <thrift/transport/TBufferTransports.h>
> #pragma comment(lib, "libthrift.lib")
> #pragma comment(lib, "libeay32.lib")
> #pragma comment(lib, "ssleay32.lib")
> using namespace ::apache::thrift;
> using namespace ::apache::thrift::protocol;
> using namespace ::apache::thrift::transport;
> using namespace ::apache::thrift::server;
> using boost::shared_ptr;
> class helloHandler : virtual public helloIf {
> public:
>       helloHandler() {
>               // Your initialization goes here
>       }
>       void func1() {
>               // Your implementation goes here
>               printf("Hello Thrift\n");
>       }
> };
> int main(int argc, char **argv) {
>       WORD wVersionRequested;
>       WSADATA wsaData;
>       int err;
>       wVersionRequested = MAKEWORD(2, 2);
>       err = WSAStartup(wVersionRequested, &wsaData);
>       int port = 9090;
>       shared_ptr<helloHandler> handler(new helloHandler());
>       shared_ptr<TProcessor> processor(new helloProcessor(handler));
>       shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
>       shared_ptr<TTransportFactory> transportFactory(new 
> TBufferedTransportFactory());
>       shared_ptr<TProtocolFactory> protocolFactory(new 
> TBinaryProtocolFactory());
>       TSimpleServer server(processor, serverTransport, transportFactory, 
> protocolFactory);
>       server.serve();
>       return 0;
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to