- WXDLLEXPORT wxChar * wxStrcat(wxChar *dest, const wxChar *src);
- WXDLLEXPORT const wxChar * wxStrchr(const wxChar *s, wxChar c);
- WXDLLEXPORT wxChar * wxStrchr(wxChar *s, wxChar c)
- { return (wxChar *)wxStrchr((const wxChar *)s, c); }
- WXDLLEXPORT int wxStrcmp(const wxChar *s1, const wxChar *s2);
- WXDLLEXPORT int wxStrcoll(const wxChar *s1, const wxChar *s2);
- WXDLLEXPORT wxChar * wxStrcpy(wxChar *dest, const wxChar *src);
- WXDLLEXPORT size_t wxStrcspn(const wxChar *s, const wxChar *reject);
- WXDLLEXPORT size_t wxStrlen(const wxChar *s);
- WXDLLEXPORT wxChar * wxStrncat(wxChar *dest, const wxChar *src, size_t n);
- WXDLLEXPORT int wxStrncmp(const wxChar *s1, const wxChar *s2, size_t n);
- WXDLLEXPORT wxChar * wxStrncpy(wxChar *dest, const wxChar *src, size_t n);
- WXDLLEXPORT const wxChar * wxStrpbrk(const wxChar *s, const wxChar *accept);
- WXDLLEXPORT wxChar * wxStrpbrk(wxChar *s, const wxChar *accept)
- { return (wxChar *)wxStrpbrk((const wxChar *)s, accept); }
- WXDLLEXPORT const wxChar * wxStrrchr(const wxChar *s, wxChar c);
- WXDLLEXPORT wxChar * wxStrrchr(wxChar *s, wxChar c)
- { return (wxChar *)wxStrrchr((const wxChar *)s, c); }
- WXDLLEXPORT size_t wxStrspn(const wxChar *s, const wxChar *accept);
- WXDLLEXPORT const wxChar * wxStrstr(const wxChar *haystack, const wxChar *needle);
- WXDLLEXPORT wxChar *wxStrstr(wxChar *haystack, const wxChar *needle)
- { return (wxChar *)wxStrstr((const wxChar *)haystack, needle); }
- WXDLLEXPORT double wxStrtod(const wxChar *nptr, wxChar **endptr);
- WXDLLEXPORT long int wxStrtol(const wxChar *nptr, wxChar **endptr, int base);
- WXDLLEXPORT unsigned long int wxStrtoul(const wxChar *nptr, wxChar **endptr, int base);
- WXDLLEXPORT size_t wxStrxfrm(wxChar *dest, const wxChar *src, size_t n);
-#endif // wxNEED_WX_STRING_H
-
-#ifndef wxStrdup
-WXDLLEXPORT wxChar * wxStrdup(const wxChar *psz);
+# ifdef __cplusplus
+ extern "C" {
+# endif
+ WXDLLIMPEXP_BASE wxChar * wxStrcat(wxChar *dest, const wxChar *src);
+ WXDLLIMPEXP_BASE const wxChar * wxStrchr(const wxChar *s, wxChar c);
+ WXDLLIMPEXP_BASE int wxStrcmp(const wxChar *s1, const wxChar *s2);
+ WXDLLIMPEXP_BASE int wxStrcoll(const wxChar *s1, const wxChar *s2);
+ WXDLLIMPEXP_BASE wxChar * wxStrcpy(wxChar *dest, const wxChar *src);
+ WXDLLIMPEXP_BASE size_t wxStrcspn(const wxChar *s, const wxChar *reject);
+ WXDLLIMPEXP_BASE wxChar * wxStrncat(wxChar *dest, const wxChar *src, size_t n);
+ WXDLLIMPEXP_BASE int wxStrncmp(const wxChar *s1, const wxChar *s2, size_t n);
+ WXDLLIMPEXP_BASE wxChar * wxStrncpy(wxChar *dest, const wxChar *src, size_t n);
+ WXDLLIMPEXP_BASE const wxChar * wxStrpbrk(const wxChar *s, const wxChar *accept);
+ WXDLLIMPEXP_BASE const wxChar * wxStrrchr(const wxChar *s, wxChar c);
+ WXDLLIMPEXP_BASE size_t wxStrspn(const wxChar *s, const wxChar *accept);
+ WXDLLIMPEXP_BASE const wxChar * wxStrstr(const wxChar *haystack, const wxChar *needle);
+# ifdef __cplusplus
+ }
+# endif
+
+ /* These functions use C++, so we can't c extern them */
+ WXDLLIMPEXP_BASE double wxStrtod(const wxChar *nptr, wxChar **endptr);
+ WXDLLIMPEXP_BASE long int wxStrtol(const wxChar *nptr, wxChar **endptr, int base);
+ WXDLLIMPEXP_BASE unsigned long int wxStrtoul(const wxChar *nptr, wxChar **endptr, int base);
+ WXDLLIMPEXP_BASE size_t wxStrxfrm(wxChar *dest, const wxChar *src, size_t n);
+
+ /* inlined versions */
+ #ifdef __cplusplus
+ inline wxChar * wxStrchr(wxChar *s, wxChar c)
+ { return (wxChar *)wxStrchr((const wxChar *)s, c); }
+ inline wxChar * wxStrpbrk(wxChar *s, const wxChar *accept)
+ { return (wxChar *)wxStrpbrk((const wxChar *)s, accept); }
+ inline wxChar * wxStrrchr(wxChar *s, wxChar c)
+ { return (wxChar *)wxStrrchr((const wxChar *)s, c); }
+ inline wxChar *wxStrstr(wxChar *haystack, const wxChar *needle)
+ { return (wxChar *)wxStrstr((const wxChar *)haystack, needle); }
+ #endif
+
+#endif /* wxNEED_WX_STRING_H */
+
+#ifndef wxStrdupA
+WXDLLIMPEXP_BASE char *wxStrdupA(const char *psz);
+#endif
+
+#ifndef wxStrdupW
+WXDLLIMPEXP_BASE wchar_t *wxStrdupW(const wchar_t *pwz);