Fix unresolved symbols with MSVC12 and /Zc:inline

In #726 and #813, linking errors with MSVC14 were resolved. The change in
MSVC12 leading to these errors was not a newly introduced bug, but that
/Zc:inline was made on by default. This option is also available with MSVC12,
so the workaround should be applied for it too.
pull/2729/head
Marcel Raad 8 years ago
parent a9ab38c171
commit 8f9c0a44bd
No known key found for this signature in database
GPG Key ID: B7F13D981BBF1607
  1. 12
      src/google/protobuf/message.cc

@ -451,8 +451,8 @@ struct ShutdownRepeatedFieldRegister {
namespace internal { namespace internal {
template<> template<>
#if defined(_MSC_VER) && (_MSC_VER >= 1900) #if defined(_MSC_VER) && (_MSC_VER >= 1800)
// Note: force noinline to workaround MSVC 2015 compiler bug, issue #240 // Note: force noinline to workaround MSVC compiler bug with /Zc:inline, issue #240
GOOGLE_ATTRIBUTE_NOINLINE GOOGLE_ATTRIBUTE_NOINLINE
#endif #endif
Message* GenericTypeHandler<Message>::NewFromPrototype( Message* GenericTypeHandler<Message>::NewFromPrototype(
@ -460,8 +460,8 @@ Message* GenericTypeHandler<Message>::NewFromPrototype(
return prototype->New(arena); return prototype->New(arena);
} }
template<> template<>
#if defined(_MSC_VER) && (_MSC_VER >= 1900) #if defined(_MSC_VER) && (_MSC_VER >= 1800)
// Note: force noinline to workaround MSVC 2015 compiler bug, issue #240 // Note: force noinline to workaround MSVC compiler bug with /Zc:inline, issue #240
GOOGLE_ATTRIBUTE_NOINLINE GOOGLE_ATTRIBUTE_NOINLINE
#endif #endif
google::protobuf::Arena* GenericTypeHandler<Message>::GetArena( google::protobuf::Arena* GenericTypeHandler<Message>::GetArena(
@ -469,8 +469,8 @@ google::protobuf::Arena* GenericTypeHandler<Message>::GetArena(
return value->GetArena(); return value->GetArena();
} }
template<> template<>
#if defined(_MSC_VER) && (_MSC_VER >= 1900) #if defined(_MSC_VER) && (_MSC_VER >= 1800)
// Note: force noinline to workaround MSVC 2015 compiler bug, issue #240 // Note: force noinline to workaround MSVC compiler bug with /Zc:inline, issue #240
GOOGLE_ATTRIBUTE_NOINLINE GOOGLE_ATTRIBUTE_NOINLINE
#endif #endif
void* GenericTypeHandler<Message>::GetMaybeArenaPointer( void* GenericTypeHandler<Message>::GetMaybeArenaPointer(

Loading…
Cancel
Save