]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/dlimpexp.h
   3  * Purpose:     Macros for declaring DLL-imported/exported functions 
   4  * Author:      Vadim Zeitlin 
   6  * Created:     16.10.2003 (extracted from wx/defs.h) 
   8  * Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org> 
   9  * Licence:     wxWindows licence 
  13     This is a C file, not C++ one, do not use C++ comments here! 
  16 #ifndef _WX_DLIMPEXP_H_ 
  17 #define _WX_DLIMPEXP_H_ 
  19 #if defined(__WXMSW__) 
  21        __declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well 
  24 #    if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) || defined(__WATCOMC__) 
  25 #        define WXEXPORT __declspec(dllexport) 
  26 #        define WXIMPORT __declspec(dllimport) 
  27 #    else /* compiler doesn't support __declspec() */ 
  31 #elif defined(__WXPM__) 
  32 #    if defined (__WATCOMC__) 
  33 #        define WXEXPORT __declspec(dllexport) 
  35            __declspec(dllimport) prepends __imp to imported symbols. We do NOT 
  39 #    elif defined(__EMX__) 
  42 #    elif (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 ))) 
  43 #        define WXEXPORT _Export 
  44 #        define WXIMPORT _Export 
  46 #elif defined(__WXMAC__) || defined(__WXCOCOA__) 
  48 #        define WXEXPORT __declspec(export) 
  49 #        define WXIMPORT __declspec(import) 
  51 #elif defined(__CYGWIN__) 
  52 #    define WXEXPORT __declspec(dllexport) 
  53 #    define WXIMPORT __declspec(dllimport) 
  56 /* for other platforms/compilers we don't anything */ 
  63    We support building wxWidgets as a set of several libraries but we don't 
  64    support arbitrary combinations of libs/DLLs: either we build all of them as 
  65    DLLs (in which case WXMAKINGDLL is defined) or none (it isn't). 
  67    However we have a problem because we need separate WXDLLEXPORT versions for 
  68    different libraries as, for example, wxString class should be dllexported 
  69    when compiled in wxBase and dllimported otherwise, so we do define separate 
  70    WXMAKING/USINGDLL_XYZ constants for each component XYZ. 
  74 #        define WXMAKINGDLL_BASE 
  77 #    define WXMAKINGDLL_NET 
  78 #    define WXMAKINGDLL_CORE 
  79 #    define WXMAKINGDLL_ADV 
  80 #    define WXMAKINGDLL_QA 
  81 #    define WXMAKINGDLL_ODBC 
  82 #    define WXMAKINGDLL_DBGRID 
  83 #    define WXMAKINGDLL_HTML 
  84 #    define WXMAKINGDLL_GL 
  85 #    define WXMAKINGDLL_XML 
  86 #    define WXMAKINGDLL_XRC 
  87 #    define WXMAKINGDLL_AUI 
  88 #    define WXMAKINGDLL_RICHTEXT 
  89 #    define WXMAKINGDLL_MEDIA 
  90 #endif /* WXMAKINGDLL */ 
  93    WXDLLEXPORT maps to export declaration when building the DLL, to import 
  94    declaration if using it or to nothing at all if we don't use wxWin as DLL 
  96 #ifdef WXMAKINGDLL_BASE 
  97 #    define WXDLLIMPEXP_BASE WXEXPORT 
  98 #    define WXDLLIMPEXP_DATA_BASE(type) WXEXPORT type 
  99 #elif defined(WXUSINGDLL) 
 100 #    define WXDLLIMPEXP_BASE WXIMPORT 
 101 #    define WXDLLIMPEXP_DATA_BASE(type) WXIMPORT type 
 102 #else /* not making nor using DLL */ 
 103 #    define WXDLLIMPEXP_BASE 
 104 #    define WXDLLIMPEXP_DATA_BASE(type) type 
 107 #ifdef WXMAKINGDLL_NET 
 108 #    define WXDLLIMPEXP_NET WXEXPORT 
 109 #    define WXDLLIMPEXP_DATA_NET(type) WXEXPORT type 
 110 #elif defined(WXUSINGDLL) 
 111 #    define WXDLLIMPEXP_NET WXIMPORT 
 112 #    define WXDLLIMPEXP_DATA_NET(type) WXIMPORT type 
 113 #else /* not making nor using DLL */ 
 114 #    define WXDLLIMPEXP_NET 
 115 #    define WXDLLIMPEXP_DATA_NET(type) type 
 118 #ifdef WXMAKINGDLL_CORE 
 119 #    define WXDLLIMPEXP_CORE WXEXPORT 
 120 #    define WXDLLIMPEXP_DATA_CORE(type) WXEXPORT type 
 121 #elif defined(WXUSINGDLL) 
 122 #    define WXDLLIMPEXP_CORE WXIMPORT 
 123 #    define WXDLLIMPEXP_DATA_CORE(type) WXIMPORT type 
 124 #else /* not making nor using DLL */ 
 125 #    define WXDLLIMPEXP_CORE 
 126 #    define WXDLLIMPEXP_DATA_CORE(type) type 
 129 #ifdef WXMAKINGDLL_ADV 
 130 #    define WXDLLIMPEXP_ADV WXEXPORT 
 131 #    define WXDLLIMPEXP_DATA_ADV(type) WXEXPORT type 
 132 #elif defined(WXUSINGDLL) 
 133 #    define WXDLLIMPEXP_ADV WXIMPORT 
 134 #    define WXDLLIMPEXP_DATA_ADV(type) WXIMPORT type 
 135 #else /* not making nor using DLL */ 
 136 #    define WXDLLIMPEXP_ADV 
 137 #    define WXDLLIMPEXP_DATA_ADV(type) type 
 140 #ifdef WXMAKINGDLL_ODBC 
 141 #    define WXDLLIMPEXP_ODBC WXEXPORT 
 142 #    define WXDLLIMPEXP_DATA_ODBC(type) WXEXPORT type 
 143 #elif defined(WXUSINGDLL) 
 144 #    define WXDLLIMPEXP_ODBC WXIMPORT 
 145 #    define WXDLLIMPEXP_DATA_ODBC(type) WXIMPORT type 
 146 #else /* not making nor using DLL */ 
 147 #    define WXDLLIMPEXP_ODBC 
 148 #    define WXDLLIMPEXP_DATA_ODBC(type) type 
 151 #ifdef WXMAKINGDLL_QA 
 152 #    define WXDLLIMPEXP_QA WXEXPORT 
 153 #    define WXDLLIMPEXP_DATA_QA(type) WXEXPORT type 
 154 #elif defined(WXUSINGDLL) 
 155 #    define WXDLLIMPEXP_QA WXIMPORT 
 156 #    define WXDLLIMPEXP_DATA_QA(type) WXIMPORT type 
 157 #else /* not making nor using DLL */ 
 158 #    define WXDLLIMPEXP_QA 
 159 #    define WXDLLIMPEXP_DATA_QA(type) type 
 162 #ifdef WXMAKINGDLL_DBGRID 
 163 #    define WXDLLIMPEXP_DBGRID WXEXPORT 
 164 #    define WXDLLIMPEXP_DATA_DBGRID(type) WXEXPORT type 
 165 #elif defined(WXUSINGDLL) 
 166 #    define WXDLLIMPEXP_DBGRID WXIMPORT 
 167 #    define WXDLLIMPEXP_DATA_DBGRID(type) WXIMPORT type 
 168 #else /* not making nor using DLL */ 
 169 #    define WXDLLIMPEXP_DBGRID 
 170 #    define WXDLLIMPEXP_DATA_DBGRID(type) type 
 173 #ifdef WXMAKINGDLL_HTML 
 174 #    define WXDLLIMPEXP_HTML WXEXPORT 
 175 #    define WXDLLIMPEXP_DATA_HTML(type) WXEXPORT type 
 176 #elif defined(WXUSINGDLL) 
 177 #    define WXDLLIMPEXP_HTML WXIMPORT 
 178 #    define WXDLLIMPEXP_DATA_HTML(type) WXIMPORT type 
 179 #else /* not making nor using DLL */ 
 180 #    define WXDLLIMPEXP_HTML 
 181 #    define WXDLLIMPEXP_DATA_HTML(type) type 
 184 #ifdef WXMAKINGDLL_GL 
 185 #    define WXDLLIMPEXP_GL WXEXPORT 
 186 #elif defined(WXUSINGDLL) 
 187 #    define WXDLLIMPEXP_GL WXIMPORT 
 188 #else /* not making nor using DLL */ 
 189 #    define WXDLLIMPEXP_GL 
 192 #ifdef WXMAKINGDLL_XML 
 193 #    define WXDLLIMPEXP_XML WXEXPORT 
 194 #elif defined(WXUSINGDLL) 
 195 #    define WXDLLIMPEXP_XML WXIMPORT 
 196 #else /* not making nor using DLL */ 
 197 #    define WXDLLIMPEXP_XML 
 200 #ifdef WXMAKINGDLL_XRC 
 201 #    define WXDLLIMPEXP_XRC WXEXPORT 
 202 #elif defined(WXUSINGDLL) 
 203 #    define WXDLLIMPEXP_XRC WXIMPORT 
 204 #else /* not making nor using DLL */ 
 205 #    define WXDLLIMPEXP_XRC 
 208 #ifdef WXMAKINGDLL_AUI 
 209 #    define WXDLLIMPEXP_AUI WXEXPORT 
 210 #elif defined(WXUSINGDLL) 
 211 #    define WXDLLIMPEXP_AUI WXIMPORT 
 212 #else /* not making nor using DLL */ 
 213 #    define WXDLLIMPEXP_AUI 
 216 #ifdef WXMAKINGDLL_RICHTEXT 
 217 #    define WXDLLIMPEXP_RICHTEXT WXEXPORT 
 218 #elif defined(WXUSINGDLL) 
 219 #    define WXDLLIMPEXP_RICHTEXT WXIMPORT 
 220 #else /* not making nor using DLL */ 
 221 #    define WXDLLIMPEXP_RICHTEXT 
 224 #ifdef WXMAKINGDLL_MEDIA 
 225 #    define WXDLLIMPEXP_MEDIA WXEXPORT 
 226 #elif defined(WXUSINGDLL) 
 227 #    define WXDLLIMPEXP_MEDIA WXIMPORT 
 228 #else /* not making nor using DLL */ 
 229 #    define WXDLLIMPEXP_MEDIA 
 232 /* for backwards compatibility, define suffix-less versions too */ 
 233 #define WXDLLEXPORT WXDLLIMPEXP_CORE 
 234 #define WXDLLEXPORT_DATA WXDLLIMPEXP_DATA_CORE 
 236 #endif /* _WX_DLIMPEXP_H_ */