]>
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_ODBC
81 # define WXMAKINGDLL_DBGRID
82 # define WXMAKINGDLL_HTML
83 # define WXMAKINGDLL_GL
84 # define WXMAKINGDLL_XML
85 # define WXMAKINGDLL_XRC
86 # define WXMAKINGDLL_MEDIA
87 #endif /* WXMAKINGDLL */
90 WXDLLEXPORT maps to export declaration when building the DLL, to import
91 declaration if using it or to nothing at all if we don't use wxWin as DLL
93 #ifdef WXMAKINGDLL_BASE
94 # define WXDLLIMPEXP_BASE WXEXPORT
95 # define WXDLLIMPEXP_DATA_BASE(type) WXEXPORT type
96 #elif defined(WXUSINGDLL)
97 # define WXDLLIMPEXP_BASE WXIMPORT
98 # define WXDLLIMPEXP_DATA_BASE(type) WXIMPORT type
99 #else /* not making nor using DLL */
100 # define WXDLLIMPEXP_BASE
101 # define WXDLLIMPEXP_DATA_BASE(type) type
104 #ifdef WXMAKINGDLL_NET
105 # define WXDLLIMPEXP_NET WXEXPORT
106 # define WXDLLIMPEXP_DATA_NET(type) WXEXPORT type
107 #elif defined(WXUSINGDLL)
108 # define WXDLLIMPEXP_NET WXIMPORT
109 # define WXDLLIMPEXP_DATA_NET(type) WXIMPORT type
110 #else /* not making nor using DLL */
111 # define WXDLLIMPEXP_NET
112 # define WXDLLIMPEXP_DATA_NET(type) type
115 #ifdef WXMAKINGDLL_CORE
116 # define WXDLLIMPEXP_CORE WXEXPORT
117 # define WXDLLIMPEXP_DATA_CORE(type) WXEXPORT type
118 #elif defined(WXUSINGDLL)
119 # define WXDLLIMPEXP_CORE WXIMPORT
120 # define WXDLLIMPEXP_DATA_CORE(type) WXIMPORT type
121 #else /* not making nor using DLL */
122 # define WXDLLIMPEXP_CORE
123 # define WXDLLIMPEXP_DATA_CORE(type) type
126 #ifdef WXMAKINGDLL_ADV
127 # define WXDLLIMPEXP_ADV WXEXPORT
128 # define WXDLLIMPEXP_DATA_ADV(type) WXEXPORT type
129 #elif defined(WXUSINGDLL)
130 # define WXDLLIMPEXP_ADV WXIMPORT
131 # define WXDLLIMPEXP_DATA_ADV(type) WXIMPORT type
132 #else /* not making nor using DLL */
133 # define WXDLLIMPEXP_ADV
134 # define WXDLLIMPEXP_DATA_ADV(type) type
137 #ifdef WXMAKINGDLL_ODBC
138 # define WXDLLIMPEXP_ODBC WXEXPORT
139 # define WXDLLIMPEXP_DATA_ODBC(type) WXEXPORT type
140 #elif defined(WXUSINGDLL)
141 # define WXDLLIMPEXP_ODBC WXIMPORT
142 # define WXDLLIMPEXP_DATA_ODBC(type) WXIMPORT type
143 #else /* not making nor using DLL */
144 # define WXDLLIMPEXP_ODBC
145 # define WXDLLIMPEXP_DATA_ODBC(type) type
148 #ifdef WXMAKINGDLL_QA
149 # define WXDLLIMPEXP_QA WXEXPORT
150 # define WXDLLIMPEXP_DATA_QA(type) WXEXPORT type
151 #elif defined(WXUSINGDLL)
152 # define WXDLLIMPEXP_QA WXIMPORT
153 # define WXDLLIMPEXP_DATA_QA(type) WXIMPORT type
154 #else /* not making nor using DLL */
155 # define WXDLLIMPEXP_QA
156 # define WXDLLIMPEXP_DATA_QA(type) type
159 #ifdef WXMAKINGDLL_DBGRID
160 # define WXDLLIMPEXP_DBGRID WXEXPORT
161 # define WXDLLIMPEXP_DATA_DBGRID(type) WXEXPORT type
162 #elif defined(WXUSINGDLL)
163 # define WXDLLIMPEXP_DBGRID WXIMPORT
164 # define WXDLLIMPEXP_DATA_DBGRID(type) WXIMPORT type
165 #else /* not making nor using DLL */
166 # define WXDLLIMPEXP_DBGRID
167 # define WXDLLIMPEXP_DATA_DBGRID(type) type
170 #ifdef WXMAKINGDLL_HTML
171 # define WXDLLIMPEXP_HTML WXEXPORT
172 # define WXDLLIMPEXP_DATA_HTML(type) WXEXPORT type
173 #elif defined(WXUSINGDLL)
174 # define WXDLLIMPEXP_HTML WXIMPORT
175 # define WXDLLIMPEXP_DATA_HTML(type) WXIMPORT type
176 #else /* not making nor using DLL */
177 # define WXDLLIMPEXP_HTML
178 # define WXDLLIMPEXP_DATA_HTML(type) type
181 #ifdef WXMAKINGDLL_GL
182 # define WXDLLIMPEXP_GL WXEXPORT
183 #elif defined(WXUSINGDLL)
184 # define WXDLLIMPEXP_GL WXIMPORT
185 #else /* not making nor using DLL */
186 # define WXDLLIMPEXP_GL
189 #ifdef WXMAKINGDLL_XML
190 # define WXDLLIMPEXP_XML WXEXPORT
191 #elif defined(WXUSINGDLL)
192 # define WXDLLIMPEXP_XML WXIMPORT
193 #else /* not making nor using DLL */
194 # define WXDLLIMPEXP_XML
197 #ifdef WXMAKINGDLL_XRC
198 # define WXDLLIMPEXP_XRC WXEXPORT
199 #elif defined(WXUSINGDLL)
200 # define WXDLLIMPEXP_XRC WXIMPORT
201 #else /* not making nor using DLL */
202 # define WXDLLIMPEXP_XRC
205 #ifdef WXMAKINGDLL_MEDIA
206 # define WXDLLIMPEXP_MEDIA WXEXPORT
207 #elif defined(WXUSINGDLL)
208 # define WXDLLIMPEXP_MEDIA WXIMPORT
209 #else /* not making nor using DLL */
210 # define WXDLLIMPEXP_MEDIA
213 /* for backwards compatibility, define suffix-less versions too */
214 #define WXDLLEXPORT WXDLLIMPEXP_CORE
215 #define WXDLLEXPORT_DATA WXDLLIMPEXP_DATA_CORE
217 #endif /* _WX_DLIMPEXP_H_ */