-//This is needed when compiling in debug mode
-#ifdef _MSC_VER
-// 'identifier' : class 'type' needs to have dll-interface to be used by
-// clients of class 'type2'
-#pragma warning ( disable : 4251 )
-// 'identifier' : identifier was truncated to 'number' characters in the
-// debug information
-#pragma warning ( disable : 4786 )
-//'identifier' : decorated name length exceeded, name was truncated
-#pragma warning ( disable : 4503 )
-// C++ exception specification ignored except to indicate a
-// function is not __declspec(nothrow)
-#pragma warning ( disable : 4290 )
-// signed/unsigned mismatch
-#pragma warning ( disable : 4018 )
-// return type for 'identifier' is '' (ie; not a UDT or reference to UDT. Will
-// produce errors if applied using infix notation
-#pragma warning ( disable : 4284 )
-#endif //_MSC_VER
-
-#ifdef __GNUC__
-#include <stdint.h>
-#define guint16 uint16_t
-#define guint32 uint32_t
-#define gint16 int16_t
-#define gint32 int32_t
+#include "gdcmConfigure.h"
+#include "gdcmSystem.h"
+#include "gdcmMacro.h"
+#include "gdcmVRKey.h"
+#include <string>
+
+//-----------------------------------------------------------------------------
+#if defined(_WIN32) && defined(BUILD_SHARED_LIBS)
+ #ifdef gdcm_EXPORTS
+ #define GDCM_EXPORT __declspec( dllexport )
+ #else
+ #define GDCM_EXPORT __declspec( dllimport )
+ #endif
+#else
+ #define GDCM_EXPORT