summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build7
-rw-r--r--modules/media/gtkffmediafile.c9
-rw-r--r--modules/media/gtkgstmediafile.c9
3 files changed, 25 insertions, 0 deletions
diff --git a/meson.build b/meson.build
index 07912b124e..3f05b7b9c6 100644
--- a/meson.build
+++ b/meson.build
@@ -370,6 +370,13 @@ glib_dep = dependency('glib-2.0', version: glib_req)
gobject_dep = dependency('gobject-2.0', version: glib_req)
if os_win32
giowin32_dep = dependency('gio-windows-2.0', version: glib_req, required: win32_enabled)
+ if giowin32_dep.version().version_compare('<2.75.0')
+ if cc.get_id() == 'msvc' and get_option('default_library') != 'static'
+ # Override _GLIB_EXTERN on Visual Studio for media modules for glib <= 2.74.x, so that we
+ # avoid error C2375 (redefinition; different linkage) when building the g_io_module_*() bits
+ cdata.set('MODULES_OVERRIDE_GLIB_EXTERN', true)
+ endif
+ endif
endif
if os_unix
giounix_dep = dependency('gio-unix-2.0', version: glib_req, required: false)
diff --git a/modules/media/gtkffmediafile.c b/modules/media/gtkffmediafile.c
index 2839cb8174..0103e5bd16 100644
--- a/modules/media/gtkffmediafile.c
+++ b/modules/media/gtkffmediafile.c
@@ -19,6 +19,15 @@
#include "config.h"
+/*
+ * Sadly, we need this to build on Visual Studio against glib-2.74.x or earlier,
+ * otherwise the build will fail when building the g_io_module_*() bits with error C2375
+ * (redefinition; different linkage). This must be before including the Gio headers.
+ */
+#if defined (_MSC_VER) && defined (MODULES_OVERRIDE_GLIB_EXTERN)
+# define _GLIB_EXTERN __declspec(dllexport) extern
+#endif
+
#include "gtkffmediafileprivate.h"
#include <glib/gi18n-lib.h>
diff --git a/modules/media/gtkgstmediafile.c b/modules/media/gtkgstmediafile.c
index 5487bb0571..7353539ef6 100644
--- a/modules/media/gtkgstmediafile.c
+++ b/modules/media/gtkgstmediafile.c
@@ -19,6 +19,15 @@
#include "config.h"
+/*
+ * Sadly, we need this to build on Visual Studio against glib-2.74.x or earlier,
+ * otherwise the build will fail when building the g_io_module_*() bits with error C2375
+ * (redefinition; different linkage). This must be before including the Gio headers.
+ */
+#if defined (_MSC_VER) && defined (MODULES_OVERRIDE_GLIB_EXTERN)
+# define _GLIB_EXTERN __declspec(dllexport) extern
+#endif
+
#include "gtkgstmediafileprivate.h"
#include "gtkgstpaintableprivate.h"