]>
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)
53 /* for other platforms/compilers we don't anything */
60 We support building wxWidgets as a set of several libraries but we don't
61 support arbitrary combinations of libs/DLLs: either we build all of them as
62 DLLs (in which case WXMAKINGDLL is defined) or none (it isn't).
64 However we have a problem because we need separate WXDLLEXPORT versions for
65 different libraries as, for example, wxString class should be dllexported
66 when compiled in wxBase and dllimported otherwise, so we do define separate
67 WXMAKING/USINGDLL_XYZ constants for each component XYZ.
71 # define WXMAKINGDLL_BASE
74 # define WXMAKINGDLL_NET
75 # define WXMAKINGDLL_CORE
76 # define WXMAKINGDLL_ADV
77 # define WXMAKINGDLL_ODBC
78 # define WXMAKINGDLL_DBGRID
79 # define WXMAKINGDLL_HTML
80 # define WXMAKINGDLL_XML
81 # define WXMAKINGDLL_XRC
82 # define WXMAKINGDLL_MEDIA
83 #endif /* WXMAKINGDLL */
86 WXDLLEXPORT maps to export declaration when building the DLL, to import
87 declaration if using it or to nothing at all if we don't use wxWin as DLL
89 #ifdef WXMAKINGDLL_BASE
90 # define WXDLLIMPEXP_BASE WXEXPORT
91 # define WXDLLIMPEXP_DATA_BASE(type) WXEXPORT type
92 #elif defined(WXUSINGDLL)
93 # define WXDLLIMPEXP_BASE WXIMPORT
94 # define WXDLLIMPEXP_DATA_BASE(type) WXIMPORT type
95 #else /* not making nor using DLL */
96 # define WXDLLIMPEXP_BASE
97 # define WXDLLIMPEXP_DATA_BASE(type) type
100 #ifdef WXMAKINGDLL_NET
101 # define WXDLLIMPEXP_NET WXEXPORT
102 # define WXDLLIMPEXP_DATA_NET(type) WXEXPORT type
103 #elif defined(WXUSINGDLL)
104 # define WXDLLIMPEXP_NET WXIMPORT
105 # define WXDLLIMPEXP_DATA_NET(type) WXIMPORT type
106 #else /* not making nor using DLL */
107 # define WXDLLIMPEXP_NET
108 # define WXDLLIMPEXP_DATA_NET(type) type
111 #ifdef WXMAKINGDLL_CORE
112 # define WXDLLIMPEXP_CORE WXEXPORT
113 # define WXDLLIMPEXP_DATA_CORE(type) WXEXPORT type
114 #elif defined(WXUSINGDLL)
115 # define WXDLLIMPEXP_CORE WXIMPORT
116 # define WXDLLIMPEXP_DATA_CORE(type) WXIMPORT type
117 #else /* not making nor using DLL */
118 # define WXDLLIMPEXP_CORE
119 # define WXDLLIMPEXP_DATA_CORE(type) type
122 #ifdef WXMAKINGDLL_ADV
123 # define WXDLLIMPEXP_ADV WXEXPORT
124 # define WXDLLIMPEXP_DATA_ADV(type) WXEXPORT type
125 #elif defined(WXUSINGDLL)
126 # define WXDLLIMPEXP_ADV WXIMPORT
127 # define WXDLLIMPEXP_DATA_ADV(type) WXIMPORT type
128 #else /* not making nor using DLL */
129 # define WXDLLIMPEXP_ADV
130 # define WXDLLIMPEXP_DATA_ADV(type) type
133 #ifdef WXMAKINGDLL_ODBC
134 # define WXDLLIMPEXP_ODBC WXEXPORT
135 # define WXDLLIMPEXP_DATA_ODBC(type) WXEXPORT type
136 #elif defined(WXUSINGDLL)
137 # define WXDLLIMPEXP_ODBC WXIMPORT
138 # define WXDLLIMPEXP_DATA_ODBC(type) WXIMPORT type
139 #else /* not making nor using DLL */
140 # define WXDLLIMPEXP_ODBC
141 # define WXDLLIMPEXP_DATA_ODBC(type) type
144 #ifdef WXMAKINGDLL_DBGRID
145 # define WXDLLIMPEXP_DBGRID WXEXPORT
146 # define WXDLLIMPEXP_DATA_DBGRID(type) WXEXPORT type
147 #elif defined(WXUSINGDLL)
148 # define WXDLLIMPEXP_DBGRID WXIMPORT
149 # define WXDLLIMPEXP_DATA_DBGRID(type) WXIMPORT type
150 #else /* not making nor using DLL */
151 # define WXDLLIMPEXP_DBGRID
152 # define WXDLLIMPEXP_DATA_DBGRID(type) type
155 #ifdef WXMAKINGDLL_HTML
156 # define WXDLLIMPEXP_HTML WXEXPORT
157 # define WXDLLIMPEXP_DATA_HTML(type) WXEXPORT type
158 #elif defined(WXUSINGDLL)
159 # define WXDLLIMPEXP_HTML WXIMPORT
160 # define WXDLLIMPEXP_DATA_HTML(type) WXIMPORT type
161 #else /* not making nor using DLL */
162 # define WXDLLIMPEXP_HTML
163 # define WXDLLIMPEXP_DATA_HTML(type) type
166 #ifdef WXMAKINGDLL_GL
167 # define WXDLLIMPEXP_GL WXEXPORT
168 #elif defined(WXUSINGDLL)
169 # define WXDLLIMPEXP_GL WXIMPORT
170 #else /* not making nor using DLL */
171 # define WXDLLIMPEXP_GL
174 #ifdef WXMAKINGDLL_XML
175 # define WXDLLIMPEXP_XML WXEXPORT
176 #elif defined(WXUSINGDLL)
177 # define WXDLLIMPEXP_XML WXIMPORT
178 #else /* not making nor using DLL */
179 # define WXDLLIMPEXP_XML
182 #ifdef WXMAKINGDLL_XRC
183 # define WXDLLIMPEXP_XRC WXEXPORT
184 #elif defined(WXUSINGDLL)
185 # define WXDLLIMPEXP_XRC WXIMPORT
186 #else /* not making nor using DLL */
187 # define WXDLLIMPEXP_XRC
190 #ifdef WXMAKINGDLL_MEDIA
191 # define WXDLLIMPEXP_MEDIA WXEXPORT
192 #elif defined(WXUSINGDLL)
193 # define WXDLLIMPEXP_MEDIA WXIMPORT
194 #else /* not making nor using DLL */
195 # define WXDLLIMPEXP_MEDIA
198 /* for backwards compatibility, define suffix-less versions too */
199 #define WXDLLEXPORT WXDLLIMPEXP_CORE
200 #define WXDLLEXPORT_DATA WXDLLIMPEXP_DATA_CORE
202 #endif /* _WX_DLIMPEXP_H_ */