为 x86 构建应用程序时,以下代码可以正常工作:
#if defined _WIN32
#define LIB_PRE __declspec(dllexport)
#elif defined __unix__
#define LIB_PRE
#else
#define LIB_PRE __declspec(dllexport)
#endif
但是对于 GCC (ARM) 给出了一个错误。我发现 __declspec(dllexport) 不会在 GCC 上工作。如果是这样,我应该为 GCC (ARM) 使用什么?
编辑:
它在许多类(class)中都有使用。例如:
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;
};
最佳答案
基本上,您可能不需要任何特别的东西。但是,如果您愿意(并且如果处理共享对象,即 *.so
文件),请了解有关 visibility pragmas 的更多信息和知名度 function attributes
而且这个问题更多的是针对特定的目标操作系统,而不是特定于目标机器的。 (我想,运行一些晦涩的 Windows8/ARM 系统的 ARM 也需要您的 __declspec
;相反,您的 __declspec
在 Linux/x86 上没有任何意义)。
关于c++ - GCC (ARM) 相当于 __declspec(dllexport),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258319/