gstconfig.h: Always use dllexport/import on Windows
authorNirbheek Chauhan <nirbheek@centricular.com>
Thu, 19 May 2016 18:54:54 +0000 (00:24 +0530)
committerTim-Philipp Müller <tim@centricular.com>
Mon, 23 May 2016 11:13:53 +0000 (12:13 +0100)
__declspec(dllexport/import) are supported by GCC and are needed for
properly generating code that fetches the values of constants from DLLs
built with __declspec(dllexport) which happens when anything using
GST_EXPORT is built with MSVC.

See: https://msdn.microsoft.com/en-us/library/619w14ds.aspx

Essentially, if you built gstreamer with MSVC and then tried to use
constants from it (such as GST_TYPE_CAPS) in a plugin, GCC would
retrieve the address of the value instead of the value itself.

gst/gstconfig.h.in

index 8460281..5e78b6d 100644 (file)
  * On Windows, this exports the plugin definition from the DLL.
  * On other platforms, this gets defined as a no-op.
  */
-#ifdef _MSC_VER
+#ifdef _WIN32 /* Both 32-bit and 64-bit; both GCC and MSVC */
 #define GST_PLUGIN_EXPORT __declspec(dllexport) extern
 #ifdef GST_EXPORTS
 #define GST_EXPORT __declspec(dllexport) extern
 #else
 #define GST_EXPORT __declspec(dllimport) extern
 #endif
-#else /* not _MSC_VER */
+#else /* !_WIN32 */
 #define GST_PLUGIN_EXPORT
 #if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
 #define GST_EXPORT extern __attribute__ ((visibility ("default")))