diff --git a/modules/base/src/CMakeLists.txt b/modules/base/src/CMakeLists.txt
index e0ac7c7cf188f6bc25c2444770ea5aa82301678d..5dbc9b808944558b318d3ce352d772934411aeb9 100644
--- a/modules/base/src/CMakeLists.txt
+++ b/modules/base/src/CMakeLists.txt
@@ -7,6 +7,7 @@ profile.cc
 units.cc
 string_ref.cc
 platform.cc
+message.cc
 )
 
 set(OST_BASE_HEADERS
diff --git a/modules/base/src/message.cc b/modules/base/src/message.cc
index bb25de374d4a5ac9c0b45bff66833c9937494716..7a53deb15384cf3648bf203a7815076d01d485ce 100644
--- a/modules/base/src/message.cc
+++ b/modules/base/src/message.cc
@@ -1,2 +1,17 @@
 #include "message.hh"
 
+namespace ost {
+ 
+Message::Message(const String& mesg,const String& prefix):
+  _prefix(prefix), _mesg(mesg) {}
+
+Message::~Message() throw() {}
+
+const char* Message::what() const throw() {
+  String msg = _prefix + ": " +_mesg;
+  return msg.c_str();
+}
+
+Error::Error(const String& m): Message(m,"Error") {}
+
+}
\ No newline at end of file
diff --git a/modules/base/src/message.hh b/modules/base/src/message.hh
index 77bd64080e6e85e097a18a51a9dfa4c8ed8b80e0..d1b8a148c0e61077e93ddcdb4332536d04336ea2 100644
--- a/modules/base/src/message.hh
+++ b/modules/base/src/message.hh
@@ -31,22 +31,18 @@
 
 namespace ost {
 
-struct DLLEXPORT Message: public std::exception {
-  Message(const String& mesg,const String& prefix=""):
-    _prefix(prefix), _mesg(mesg) {}
-  virtual ~Message() throw() {}
+struct DLLEXPORT_OST_BASE Message: public std::exception {
+  Message(const String& mesg,const String& prefix="");
+  virtual ~Message() throw();
   // exception interface
-  virtual const char* what() const throw() {
-    String msg = _prefix + ": " +_mesg;
-    return msg.c_str();
-  }
+  virtual const char* what() const throw();
 
   String _prefix;
   String _mesg;
 };
 
-struct DLLEXPORT Error: public Message {
-  Error(const String& m): Message(m,"Error") {}
+struct DLLEXPORT_OST_BASE Error: public Message {
+  Error(const String& m);
 };
 
 } // namespace