diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3a068a9016ed5a8be1ec505ed8a41844dbfad265..e068257b140c144ecbefd132a1654e811f0dac70 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,6 +38,8 @@ set(CMAKE_BUILD_TYPE Release)
 #set(CMAKE_BUILD_TYPE Debug)
 
 if(WIN32)
+  set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
+  set(BUILD_SHARED_LIBS TRUE)
   #if(BGS_PYTHON_SUPPORT)
     set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
     set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
@@ -78,8 +80,7 @@ if(OpenCV_FOUND)
   message(STATUS "OpenCV library status:")
   message(STATUS "    version: ${OpenCV_VERSION}")
   message(STATUS "    libraries: ${OpenCV_LIBS}")
-  message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
-  message(STATUS "")
+  message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}\n")
 endif()
 
 # if(${OpenCV_VERSION} VERSION_EQUAL 3 OR ${OpenCV_VERSION} VERSION_GREATER 3)
@@ -141,8 +142,7 @@ if(BGS_PYTHON_SUPPORT)
       OUTPUT_VARIABLE NUMPY_INCLUDE_DIR
       RETURN_VALUE NUMPY_NOT_FOUND)
   endif()
-  message(STATUS "NUMPY_INCLUDE_DIR: ${NUMPY_INCLUDE_DIR}")
-  message(STATUS "")
+  message(STATUS "NUMPY_INCLUDE_DIR: ${NUMPY_INCLUDE_DIR}\n")
 endif()
 
 file(GLOB main Main.cpp FrameProcessor.cpp PreProcessor.cpp VideoAnalysis.cpp VideoCapture.cpp)
@@ -173,6 +173,13 @@ if(${OpenCV_VERSION} VERSION_LESS 2.4.3)
 endif()
 
 add_library(bgslibrary_core SHARED ${bgs_src} ${analysis_src})
+# generates the export header bgslibrary_core_EXPORTS.h automatically
+include(GenerateExportHeader)
+GENERATE_EXPORT_HEADER(bgslibrary_core
+    BASE_NAME bgslibrary_core
+    EXPORT_MACRO_NAME bgslibrary_core_EXPORTS
+    EXPORT_FILE_NAME bgslibrary_core_EXPORTS.h
+    STATIC_DEFINE BGSLIBRARY_CORE_EXPORTS_BUILT_AS_STATIC)
 target_link_libraries(bgslibrary_core ${OpenCV_LIBS})
 set_property(TARGET bgslibrary_core PROPERTY PUBLIC_HEADER ${bgs_include})
 
@@ -221,7 +228,7 @@ target_link_libraries(bgs_demo ${OpenCV_LIBS} bgslibrary_core)
 add_executable(bgs_demo2 ${demo2})
 target_link_libraries(bgs_demo2 ${OpenCV_LIBS} bgslibrary_core)
 
-if(BGS_PYTHON_SUPPORT)
+if(UNIX AND BGS_PYTHON_SUPPORT)
   execute_process(
     COMMAND "${PYTHON_EXECUTABLE}" -c "if True:
       from distutils import sysconfig as sc
@@ -230,8 +237,7 @@ if(BGS_PYTHON_SUPPORT)
     OUTPUT_STRIP_TRAILING_WHITESPACE
   )
   
-  message(STATUS "bgslibrary python package will be installed at: ${PYTHON_SITE}")
-  message(STATUS "")
+  message(STATUS "The bgslibrary python package will be installed at: ${PYTHON_SITE}\n")
   
   install(TARGETS bgs_python DESTINATION ${PYTHON_SITE})
   #install(FILES ${mypackage_python_files} DESTINATION ${PYTHON_SITE}/mypackage)
@@ -247,8 +253,15 @@ install(TARGETS bgslibrary_core
   FRAMEWORK DESTINATION "/Library/Frameworks"
 )
 
-# to avoid: error while loading shared libraries: libbgslibrary_core.so
-message(STATUS "After make install, run:")
-message(STATUS "$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib")
-message(STATUS "$ export LD_LIBRARY_PATH")
-message(STATUS "")
+if(UNIX)
+  # to avoid: error while loading shared libraries: libbgslibrary_core.so
+  message(STATUS "You might need to run:")
+  message(STATUS "$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib")
+  message(STATUS "$ export LD_LIBRARY_PATH")
+  message(STATUS "after 'make install' to avoid error while loading libbgslibrary_core\n")
+endif()
+
+if(WIN32)
+  message(STATUS "You might need to add ${CMAKE_CURRENT_BINARY_DIR} to your PATH to be able to run your applications.")
+  message(STATUS "> set PATH=%PATH%;${CMAKE_CURRENT_BINARY_DIR}\n")
+endif()
\ No newline at end of file