-/* Take care of non-cygwin platforms */
-#if !defined(NCURSES_IMPEXP)
-# define NCURSES_IMPEXP /* nothing */
-#endif
-#if !defined(NCURSES_API)
-# define NCURSES_API /* nothing */
-#endif
-#if !defined(NCURSES_EXPORT)
-# define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
-#endif
-#if !defined(NCURSES_EXPORT_VAR)
-# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
+#define NCURSES_WRAPPED_VAR(type,name) extern NCURSES_IMPEXP type NCURSES_PUBLIC_VAR(name)(void)
+
+#define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
+#define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
+
+/*
+ * These symbols hide dllimport/dllexport, for compilers which care about it.
+ */
+#if defined(__CYGWIN__) || (defined(_WIN32) || defined(_WIN64))
+# if defined(NCURSES_STATIC) /* "static" here only implies "not-a-DLL" */
+# define NCURSES_EXPORT_GENERAL_IMPORT
+# define NCURSES_EXPORT_GENERAL_EXPORT
+# else
+# define NCURSES_EXPORT_GENERAL_IMPORT __declspec(dllimport)
+# define NCURSES_EXPORT_GENERAL_EXPORT __declspec(dllexport)
+# endif
+# define NCURSES_API __cdecl
+#else
+# define NCURSES_EXPORT_GENERAL_IMPORT
+# define NCURSES_EXPORT_GENERAL_EXPORT
+# define NCURSES_API /* FIXME: __attribute__ ((cdecl)) is only available on x86 */