c++ - GCC (ARM) 相当于 __declspec(dllexport)

标签 c++ gcc arm dllexport visual-studio-2010

为 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/

相关文章:

c++ - 将指针传递给对象时没有匹配的构造函数初始化问题

C++传递指向静态函数的指针在执行期间更改值

c++ - 编译器错误 : memset was not declared in this scope

gcc 如何抑制不兼容的指针类型警告?

c - Intel x86 到 ARM 汇编转换

android - 有时 gcc 在编译 arm abi 的 C++ 代码时会将第一个参数放入 R1 寄存器?

c++ - 如何在 C++ 头文件中初始化和返回数组?

c++ - 在 C++ 中从数组中复制奇数元素

c - 为什么这段代码在我的笔记本电脑 (OSX 10.9) 上运行良好,但在服务器 (Linux) 上却出现段错误?

Android 绑定(bind) TCP shellcode - 连接被拒绝