diff --git a/src/OpenMesh/Core/CMakeLists.txt b/src/OpenMesh/Core/CMakeLists.txt
index 637ba8e8..f5aa9535 100644
--- a/src/OpenMesh/Core/CMakeLists.txt
+++ b/src/OpenMesh/Core/CMakeLists.txt
@@ -39,6 +39,7 @@ if (WIN32)
if ( OPENMESH_BUILD_SHARED )
# Experimental Feature!!!!
+ add_definitions( -DOPENMESHDLL)
acg_add_library (OpenMeshCore SHARED ${sources} ${headers})
else()
# OpenMesh has no dll exports so we have to build a static library on windows
diff --git a/src/OpenMesh/Core/System/OpenMeshDLLMacros.hh b/src/OpenMesh/Core/System/OpenMeshDLLMacros.hh
new file mode 100644
index 00000000..5fface2d
--- /dev/null
+++ b/src/OpenMesh/Core/System/OpenMeshDLLMacros.hh
@@ -0,0 +1,65 @@
+/*===========================================================================*\
+ * *
+ * OpenMesh *
+ * Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen *
+ * www.openmesh.org *
+ * *
+ *---------------------------------------------------------------------------*
+ * This file is part of OpenMesh. *
+ * *
+ * OpenMesh is free software: you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation, either version 3 of *
+ * the License, or (at your option) any later version with the *
+ * following exceptions: *
+ * *
+ * If other files instantiate templates or use macros *
+ * or inline functions from this file, or you compile this file and *
+ * link it with other files to produce an executable, this file does *
+ * not by itself cause the resulting executable to be covered by the *
+ * GNU Lesser General Public License. This exception does not however *
+ * invalidate any other reasons why the executable file might be *
+ * covered by the GNU Lesser General Public License. *
+ * *
+ * OpenMesh is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU LesserGeneral Public *
+ * License along with OpenMesh. If not, *
+ * see . *
+ * *
+\*===========================================================================*/
+
+/*===========================================================================*\
+ * *
+ * $Revision: 566 $ *
+ * $Date: 2012-03-23 18:00:57 +0100 (Fr, 23 Mär 2012) $ *
+ * *
+\*===========================================================================*/
+
+// Disable the warnings about needs to have DLL interface as we have tons of vector templates
+#ifdef WIN32
+ #pragma warning( disable: 4251 )
+#endif
+
+#ifndef OPENMESHDLLEXPORT
+ #ifdef WIN32
+ #ifdef OPENMESHDLL
+ #ifdef USEOPENMESH
+ #define OPENMESHDLLEXPORT __declspec(dllimport)
+ #define OPENMESHDLLEXPORTONLY
+ #else
+ #define OPENMESHDLLEXPORT __declspec(dllexport)
+ #define OPENMESHDLLEXPORTONLY __declspec(dllexport)
+ #endif
+ #else
+ #define OPENMESHDLLEXPORT
+ #define OPENMESHDLLEXPORTONLY
+ #endif
+ #else
+ #define OPENMESHDLLEXPORT
+ #define OPENMESHDLLEXPORTONLY
+ #endif
+#endif
diff --git a/src/OpenMesh/Core/System/config.h b/src/OpenMesh/Core/System/config.h
index b66c7405..3eefb611 100644
--- a/src/OpenMesh/Core/System/config.h
+++ b/src/OpenMesh/Core/System/config.h
@@ -53,6 +53,7 @@
#include
#include
+#include
// ----------------------------------------------------------------------------
diff --git a/src/OpenMesh/Tools/CMakeLists.txt b/src/OpenMesh/Tools/CMakeLists.txt
index 0f125c8e..57d24ba5 100644
--- a/src/OpenMesh/Tools/CMakeLists.txt
+++ b/src/OpenMesh/Tools/CMakeLists.txt
@@ -39,6 +39,7 @@ if (WIN32)
if ( OPENMESH_BUILD_SHARED )
# Experimental Feature!!!!
+ add_definitions( -DOPENMESHDLL)
acg_add_library (OpenMeshTools SHARED ${sources} ${headers})
else()
# OpenMesh has no dll exports so we have to build a static library on windows
diff --git a/src/OpenMesh/Tools/Utils/Timer.hh b/src/OpenMesh/Tools/Utils/Timer.hh
index 8d29d8f6..4e667196 100644
--- a/src/OpenMesh/Tools/Utils/Timer.hh
+++ b/src/OpenMesh/Tools/Utils/Timer.hh
@@ -77,7 +77,7 @@ class TimerImpl;
/** Timer class
*/
-class Timer
+class OPENMESHDLLEXPORT Timer
{
public:
diff --git a/src/OpenMesh/Tools/Utils/conio.hh b/src/OpenMesh/Tools/Utils/conio.hh
index b6317deb..f5a47882 100644
--- a/src/OpenMesh/Tools/Utils/conio.hh
+++ b/src/OpenMesh/Tools/Utils/conio.hh
@@ -52,6 +52,7 @@ namespace Utils {
*
* \see getch(), getche()
*/
+OPENMESHDLLEXPORT
int kbhit(void);
@@ -61,6 +62,7 @@ int kbhit(void);
*
* \see getche(), kbhit()
*/
+OPENMESHDLLEXPORT
int getch(void);
/** A blocking single character input from stdin with echo.
@@ -68,6 +70,7 @@ int getch(void);
* \return Character, or -1 if an input error occurs.
* \see getch(), kbhit()
*/
+OPENMESHDLLEXPORT
int getche(void);
// ----------------------------------------------------------------------------