diff --git a/stats/rtc_stats.cc b/stats/rtc_stats.cc
index f5139a7..92f64e4 100644
--- a/stats/rtc_stats.cc
+++ b/stats/rtc_stats.cc
@@ -128,8 +128,9 @@
 
 #define WEBRTC_DEFINE_RTCSTATSMEMBER(T, type, is_seq, is_str, to_str, to_json) \
   template <>                                                                  \
-  const RTCStatsMemberInterface::Type RTCStatsMember<T>::kType =               \
-      RTCStatsMemberInterface::type;                                           \
+  RTCStatsMemberInterface::Type RTCStatsMember<T>::StaticType() {              \
+    return type;                                                               \
+  }                                                                            \
   template <>                                                                  \
   bool RTCStatsMember<T>::is_sequence() const {                                \
     return is_seq;                                                             \
@@ -147,86 +148,87 @@
   std::string RTCStatsMember<T>::ValueToJson() const {                         \
     RTC_DCHECK(is_defined_);                                                   \
     return to_json;                                                            \
-  }
+  }                                                                            \
+  template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) RTCStatsMember<T>
 
 WEBRTC_DEFINE_RTCSTATSMEMBER(bool,
                              kBool,
                              false,
                              false,
                              rtc::ToString(value_),
-                             rtc::ToString(value_))
+                             rtc::ToString(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(int32_t,
                              kInt32,
                              false,
                              false,
                              rtc::ToString(value_),
-                             rtc::ToString(value_))
+                             rtc::ToString(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(uint32_t,
                              kUint32,
                              false,
                              false,
                              rtc::ToString(value_),
-                             rtc::ToString(value_))
+                             rtc::ToString(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(int64_t,
                              kInt64,
                              false,
                              false,
                              rtc::ToString(value_),
-                             ToStringAsDouble(value_))
+                             ToStringAsDouble(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(uint64_t,
                              kUint64,
                              false,
                              false,
                              rtc::ToString(value_),
-                             ToStringAsDouble(value_))
+                             ToStringAsDouble(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(double,
                              kDouble,
                              false,
                              false,
                              rtc::ToString(value_),
-                             ToStringAsDouble(value_))
-WEBRTC_DEFINE_RTCSTATSMEMBER(std::string, kString, false, true, value_, value_)
+                             ToStringAsDouble(value_));
+WEBRTC_DEFINE_RTCSTATSMEMBER(std::string, kString, false, true, value_, value_);
 WEBRTC_DEFINE_RTCSTATSMEMBER(std::vector<bool>,
                              kSequenceBool,
                              true,
                              false,
                              VectorToString(value_),
-                             VectorToString(value_))
+                             VectorToString(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(std::vector<int32_t>,
                              kSequenceInt32,
                              true,
                              false,
                              VectorToString(value_),
-                             VectorToString(value_))
+                             VectorToString(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(std::vector<uint32_t>,
                              kSequenceUint32,
                              true,
                              false,
                              VectorToString(value_),
-                             VectorToString(value_))
+                             VectorToString(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(std::vector<int64_t>,
                              kSequenceInt64,
                              true,
                              false,
                              VectorToString(value_),
-                             VectorToStringAsDouble(value_))
+                             VectorToStringAsDouble(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(std::vector<uint64_t>,
                              kSequenceUint64,
                              true,
                              false,
                              VectorToString(value_),
-                             VectorToStringAsDouble(value_))
+                             VectorToStringAsDouble(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(std::vector<double>,
                              kSequenceDouble,
                              true,
                              false,
                              VectorToString(value_),
-                             VectorToStringAsDouble(value_))
+                             VectorToStringAsDouble(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(std::vector<std::string>,
                              kSequenceString,
                              true,
                              false,
                              VectorOfStringsToString(value_),
-                             VectorOfStringsToString(value_))
+                             VectorOfStringsToString(value_));
 
 }  // namespace webrtc
