[
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)