diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt
index 9765628c6116ef7c04802e1171e2bee682ab692f..8fe735c68ebcbd0d4b2ca1500ee2ae0ffb8230b1 100644
--- a/bindings/python/CMakeLists.txt
+++ b/bindings/python/CMakeLists.txt
@@ -132,13 +132,19 @@ IF(BUILD_PYTHON_INTERFACE)
 
   TARGET_LINK_LIBRARIES(${PYWRAP} PUBLIC ${PROJECT_NAME})
   TARGET_LINK_BOOST_PYTHON(${PYWRAP} PUBLIC)
-
+  IF(URDFDOM_FOUND)
+    PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} urdfdom)
+  ENDIF(URDFDOM_FOUND)
   IF(HPP_FCL_FOUND)
     PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} hpp-fcl)
   ENDIF(HPP_FCL_FOUND)
   IF(BUILD_WITH_HPP_FCL_PYTHON_BINDINGS)
     TARGET_COMPILE_DEFINITIONS(${PYWRAP} PRIVATE -DPINOCCHIO_WITH_HPP_FCL_PYTHON_BINDINGS)
   ENDIF(BUILD_WITH_HPP_FCL_PYTHON_BINDINGS)
+  IF(WIN32)
+    TARGET_COMPILE_DEFINITIONS(${PYWRAP} PRIVATE -DNOMINMAX)
+    TARGET_LINK_LIBRARIES(${PYWRAP} PUBLIC ${PYTHON_LIBRARY})
+  ENDIF(WIN32)
 
   IF(CPPAD_FOUND)
     PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} "cppad")
diff --git a/bindings/python/parsers/python.hpp b/bindings/python/parsers/python.hpp
index 7761d0715e8e1893afac7853b5f243a6ba049b16..ccd06c836933ada47245fab31ee89eac870b0a15 100644
--- a/bindings/python/parsers/python.hpp
+++ b/bindings/python/parsers/python.hpp
@@ -9,6 +9,16 @@
 
 #include <boost/python.hpp>
 
+#if defined _WIN32
+# ifdef pinocchio_pywrap_EXPORTS
+#   define PINOCCHIO_PYWRAP_DLLAPI __declspec(dllexport)
+# else
+#   define PINOCCHIO_PYWRAP_DLLAPI __declspec(dllimport)
+# endif // pinocchio_pywrap_EXPORTS
+#else
+# define PINOCCHIO_PYWRAP_DLLAPI
+#endif // _WIN32
+
 namespace pinocchio
 {
   namespace python
@@ -24,6 +34,7 @@ namespace pinocchio
     /// \returns The model constructed by the Python script.
     ///
     // TODO: look inside the context of Python and find an occurence of object Model
+    PINOCCHIO_PYWRAP_DLLAPI
     Model buildModel(const std::string & filename,
                      const std::string & var_name = "model",
                      bool verbose = false);