]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dlimpexp.h
Implement wxWindow::SetFocusIgnoringChildren for GTK+
[wxWidgets.git] / include / wx / dlimpexp.h
index 3df4f4e603b851f0ec17604a255eb413ccc928ff..f6effd34446982c854ba7ec6557f4f97ea0a690f 100644 (file)
 #define WXDLLEXPORT WXDLLIMPEXP_CORE
 #define WXDLLEXPORT_DATA WXDLLIMPEXP_DATA_CORE
 
+/*
+   MSVC up to 6.0 needs to be explicitly told to export template instantiations
+   used by the DLL clients, use this macro to do it like this:
+
+       template <typename T> class Foo { ... };
+       WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( Foo<int> )
+
+   (notice that currently we only need this for the wxBase library)
+ */
+#if defined(__VISUALC__) && (__VISUALC__ <= 1200)
+    #ifdef WXMAKINGDLL_BASE
+        #define WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE(decl) \
+            template class WXDLLIMPEXP_BASE decl;
+    #else
+        /*
+           We need to disable this warning when using this macro, as
+           recommended by Microsoft itself: 
+
+           http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b168958
+         */
+        #pragma warning(disable:4231)
+
+        #define WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE(decl) \
+            extern template class WXDLLIMPEXP_BASE decl;
+    #endif
+#else /* not VC <= 6 */
+    #define WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE(decl)
+#endif /* VC6/others */
+
 #endif /* _WX_DLIMPEXP_H_ */