[
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