diff --git a/CMakeLists.txt b/CMakeLists.txt
index ab54efc27f47bcce6e66b25cd3592499391df43e..59db790ef7e4a45a5f4a22f81da4161c1d8a8596 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1129,5 +1129,5 @@ if(ENABLE_SWIG_EXPERIMENTAL)
   SET_SOURCE_FILES_PROPERTIES(Geo/GModel.i PROPERTIES CPLUSPLUS ON)
   #SET_SOURCE_FILES_PROPERTIES(Geo/GModel.i SWIG_FLAGS "-includeall -importall")
   SWIG_ADD_MODULE(gmshPython python Geo/GModel.i ${GMSH_SRC})
-  SWIG_LINK_LIBRARIES(gmshPython ${PYTHON_LIBRARIES} ${EXTERNAL_LIBRARIES})
+  SWIG_LINK_LIBRARIES(gmshPython ${PYTHON_LIBRARIES} ${EXTERNAL_LIBRARIES} ${LINK_LIBRARIES})
 endif(ENABLE_SWIG_EXPERIMENTAL)
diff --git a/Solver/function.cpp b/Solver/function.cpp
index 8222f35b507a71e01503a7dae1022879eecaa18e..2517fc72a08a7a8091e189283983351f3bca6acc 100644
--- a/Solver/function.cpp
+++ b/Solver/function.cpp
@@ -12,11 +12,6 @@
 #include <dlfcn.h>
 #endif
 
-struct functionReplaceCache {
-  dataCacheMap *map;
-  std::vector <dataCacheDouble*> toReplace;
-  std::vector <dataCacheDouble*> toCompute;
-};
 
 // function
 
diff --git a/Solver/function.h b/Solver/function.h
index 2c3876df2198cadc92bf152d7d4ae3d1eb8c321b..c53801f1144cf31c321024bd44519361d531cee4 100644
--- a/Solver/function.h
+++ b/Solver/function.h
@@ -14,7 +14,7 @@ class dgDataCacheMap;
 class function;
 class functionConstant;
 class functionReplace;
-struct functionReplaceCache;
+class functionReplaceCache;
 class MElement;
 class binding;
 
@@ -110,6 +110,13 @@ class functionSolution : public function {
   }
 };
 
+class functionReplaceCache {
+  public:
+  dataCacheMap *map;
+  std::vector <dataCacheDouble*> toReplace;
+  std::vector <dataCacheDouble*> toCompute;
+};
+
 class functionReplace {
   friend class dataCacheMap;
   friend class dataCacheDouble;