diff --git a/src/google/protobuf/repeated_ptr_field.cc b/src/google/protobuf/repeated_ptr_field.cc
index 1eee2f24ac39c..40b2c7a0dd11d 100644
--- a/src/google/protobuf/repeated_ptr_field.cc
+++ b/src/google/protobuf/repeated_ptr_field.cc
@@ -142,7 +142,8 @@ memswap<ArenaOffsetHelper<RepeatedPtrFieldBase>::value>(
     char* PROTOBUF_RESTRICT, char* PROTOBUF_RESTRICT);
 
 template <>
-void RepeatedPtrFieldBase::MergeFrom<std::string>(
+PROTOBUF_EXPORT_TEMPLATE_DEFINE void
+RepeatedPtrFieldBase::MergeFrom<std::string>(
     const RepeatedPtrFieldBase& from) {
   Prefetch5LinesFrom1Line(&from);
   ABSL_DCHECK_NE(&from, this);
@@ -218,7 +219,8 @@ void RepeatedPtrFieldBase::MergeFromConcreteMessage(
 }
 
 template <>
-void RepeatedPtrFieldBase::MergeFrom<MessageLite>(
+PROTOBUF_EXPORT_TEMPLATE_DEFINE void
+RepeatedPtrFieldBase::MergeFrom<MessageLite>(
     const RepeatedPtrFieldBase& from) {
   Prefetch5LinesFrom1Line(&from);
   ABSL_DCHECK_NE(&from, this);
