GCC (ARM) equivalent to __declspec(dllexport)

umair picture umair · Nov 24, 2011 · Viewed 10.3k times · Source

When building application for x86, the following code works fine:

#if   defined _WIN32
#define LIB_PRE __declspec(dllexport)
#elif defined __unix__
#define LIB_PRE
#else
#define LIB_PRE __declspec(dllexport)
#endif

But gives an error for GCC (ARM). I have found out that __declspec(dllexport) wont work on GCC. If so, what should I use for GCC (ARM)?

Edit:

Its used in many classes. e.g:

class CJsonValueString : public CJsonValue
{
 private:
  jstring value;
 public:
  LIB_PRE CJsonValueString(jstring value);
  LIB_PRE CJsonValueString(const CJsonValueString * value);
  LIB_PRE jstring ToString() const;
  LIB_PRE int ToInt() const;
  LIB_PRE int64 ToInt64 () const;
  LIB_PRE float ToFloat () const;
  LIB_PRE void GetValue(jstring & str) const;
};

Answer

Basile Starynkevitch picture Basile Starynkevitch · Nov 24, 2011

Basically, you probably don't need anything special. But if you want (and if working on shared objects, i.e. *.so files), learn more about visibility pragmas and visibility function attributes

And the question is more target operating system specific than target machine specific. (I would imagine that an ARM running some obscure Windows8/ARM system would also need your __declspec; conversely, your __declspec has no sense on Linux/x86).