[ https://issues.apache.org/jira/browse/THRIFT-2553?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Connor Manning closed THRIFT-2553. ---------------------------------- Resolution: Fixed Fix Version/s: 0.9.1 Non-issue, caused by mismatched dependency configurations. > C++ linker error - transport/TSocket > ------------------------------------ > > Key: THRIFT-2553 > URL: https://issues.apache.org/jira/browse/THRIFT-2553 > Project: Thrift > Issue Type: Bug > Components: C++ - Library > Affects Versions: 0.9.1 > Environment: OS X Mavericks. Clang. Thrift 0.9.1 installed via > Homebrew. Patches 2201, 667, 1755, 2045, and 2229 have been applied via the > current default Homebrew formula for 0.9.1. > Reporter: Connor Manning > Labels: C++, Library, OS-X, TSocket > Fix For: 0.9.1 > > Attachments: Something_client.cpp, sample.thrift > > > Trying to create a Thrift project with a C++ client, I could not complete the > linking step. I then distilled my project to very basic functionality > assuming a coding error, and could not link successfully. From there, I > started from scratch with the CPP Tutorial, and have found the same error > there. It appears that transport/TSocket has not successfully been built > into the dynamic library. > My thrift file is called sample.thrift and declares a simple service called > "Something", which contains only a ping() method. > My build step looks like: > g++ -lthrift -Wall -I/usr/local/include/thrift -stdlib=libstdc++ > Something_client.cpp sample_constants.cpp sample_types.cpp Something.cpp -o > Client > The result looks like: > Undefined symbols for architecture x86_64: > "apache::thrift::transport::TSocket::TSocket(std::string, int)", referenced > from: > _main in Something_client-ca4a8d.o > ld: symbol(s) not found for architecture x86_64 > clang: error: linker command failed with exit code 1 (use -v to see > invocation) > I have replicated this error with separate compile/linking steps (as shown in > the client section in http://wiki.apache.org/thrift/ThriftUsageC%2B%2B). The > server compiles and links successfully, and the client compiles, but does not > like. I have also replicated it via the given Makefile. > Aside from the TSocket, the rest of the file compiles and links successfully. > The TBufferedTransport and TBinaryProtocol are linked with no issues when > the TSocket is replaced with a dummy, e.g.: > TSocket* t(0); > boost::shared_ptr<TTransport> socket(t); > Leading me to my conclusion that somehow the TSocket did not make it into my > Thrift library. Are there any suggestions for what could be causing this and > how it could be resolved? > Thank you. -- This message was sent by Atlassian JIRA (v6.2#6252)