diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4c837ebce585f172c88fb10a4f2e1497cd0b812d..8babd1c6bca421397b1e56fdfae299c203385d91 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1519,6 +1519,9 @@ if(WIN32 AND NOT MSVC OR CYGWIN)
 elseif(MSVC)
   set_target_properties(gmsh PROPERTIES LINK_FLAGS
     "/STACK:16777216 /SAFESEH:NO")
+  if(ENABLE_BUILD_DYNAMIC)
+    set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+  endif(ENABLE_BUILD_DYNAMIC)
 endif(WIN32 AND NOT MSVC OR CYGWIN)
 
 # parser target