[ https://issues.apache.org/jira/browse/THRIFT-1325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13152520#comment-13152520 ]
Nathan Slingerland commented on THRIFT-1325: -------------------------------------------- I can confirm that the fix described above works (tried on Fedora 15 x86_64 - gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9)). ========================= Index: TBinaryProtocol.h =================================================================== --- TBinaryProtocol.h (revision 801) +++ TBinaryProtocol.h (revision 802) @@ -36,8 +36,14 @@ class TBinaryProtocolT : public TVirtualProtocol< TBinaryProtocolT<Transport_> > { protected: +#if 0 static const int32_t VERSION_MASK = 0xffff0000; static const int32_t VERSION_1 = 0x80010000; +#else + // https://issues.apache.org/jira/browse/THRIFT-1325 + static const int32_t VERSION_MASK = ((int32_t)0xffff0000); + static const int32_t VERSION_1 = ((int32_t)0x80010000); +#endif // VERSION_2 (0x80020000) is taken by TDenseProtocol. public: changes ========================= Index: TDenseProtocol.h =================================================================== --- TDenseProtocol.h (revision 801) +++ TDenseProtocol.h (revision 802) @@ -59,9 +59,16 @@ class TDenseProtocol : public TVirtualProtocol<TDenseProtocol, TBinaryProtocol> { protected: +#if 0 static const int32_t VERSION_MASK = 0xffff0000; // VERSION_1 (0x80010000) is taken by TBinaryProtocol. static const int32_t VERSION_2 = 0x80020000; +#else + // https://issues.apache.org/jira/browse/THRIFT-1325 + static const int32_t VERSION_MASK = ((int32_t)0xffff0000); + // VERSION_1 (0x80010000) is taken by TBinaryProtocol. + static const int32_t VERSION_2 = ((int32_t)0x80020000); +#endif public: typedef apache::thrift::reflection::local::TypeSpec TypeSpec; > Thrift SVN and latest GCC issue: Undefined symbols: > "apache::thrift::protocol::TBinaryProtocolT<apache::thrift::transport::TTransport>::VERSION_MASK" > ----------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: THRIFT-1325 > URL: https://issues.apache.org/jira/browse/THRIFT-1325 > Project: Thrift > Issue Type: Bug > Components: C++ - Library > Environment: Mac OS 10.6.8 x86_64, GNU GCC 4.6.1 hand compiled > Reporter: Philippe STRAUSS > Priority: Blocker > Original Estimate: 1h > Remaining Estimate: 1h > > I need latest gcc for a pet project of mine using intrisics. Using GCC 4.6.1, > building code generated by thrift for a C++ server, I always get the error > cut and pasted below at link time. Using apple shipped gcc 4.2.1 it build > (link) fine, but cannot use it for another part of my project :( > + /opt/gnucc/bin/g++ -g -DDEBUG -I/usr/local/include -I/opt/local/include > -I/opt/misc/include -I/opt/misc/include/thrift -I/opt/av/include > -I/opt/num/include -o jack_preamp.nat jack_preamp.o rc_types.o rc_constants.o > Control.o ../common_c/libcommon.a ../jackc/libjackc.a ../config/libcf.a > ../libsigpath/libsigpath.a -framework CoreAudio -framework CoreServices > -framework AudioUnit -L/usr/local/lib -ljack -L/opt/local/lib -lsndfile > -L/opt/misc/lib -lconfig -L/opt/misc/lib -lthrift -L/opt/av/lib > -L/opt/num/lib -lconvolve -lsndfile -lsamplerate -lfftw3f > Undefined symbols: > > "apache::thrift::protocol::TBinaryProtocolT<apache::thrift::transport::TTransport>::VERSION_MASK", > [==================referenced > from:================================================================== ] > 00225 / 00227 > > apache::thrift::protocol::TBinaryProtocolT<apache::thrift::transport::TTransport>::readMessageBegin(std::basic_string<char, > std::char_traits<char>, std::allocator<char> >&, > apache::thrift::protocol::TMessageType&, int&) in jack_preamp.o > > "apache::thrift::protocol::TBinaryProtocolT<apache::thrift::transport::TTransport>::VERSION_1", > referenced from: > > apache::thrift::protocol::TBinaryProtocolT<apache::thrift::transport::TTransport>::writeMessageBegin(std::basic_string<char, > std::char_traits<char>, std::allocator<char> > const&, > apache::thrift::protocol::TMessageType, int) in jack_preamp.o > > apache::thrift::protocol::TBinaryProtocolT<apache::thrift::transport::TTransport>::readMessageBegin(std::basic_string<char, > std::char_traits<char>, std::allocator<char> >&, > apache::thrift::protocol::TMessageType&, int&) in jack_preamp.o > ld: symbol(s) not found > collect2: ld a retourné 1 code d'état d'exécution -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira