使用共享库为Android调用约定

时间:2015-09-22 14:07:57

标签: android c++ arm calling-convention stdcall

我为我的Unity3d应用程序用C ++创建了一些插件文件。到目前为止,该应用程序只是一个简单的原型,所以我只在我的桌面上测试编译为Windows的DLL库。今天我将这些文件重新编译为Android的.so(共享对象)(arm和x86)并收到警告信息。

  

警告:调用约定' __ stdcall'忽略了这个目标   [-Wignored-属性]

1。这意味着所有函数都编译为__cdecl?

2。我不能在.so库中指定调用约定吗?

我用__cdecl替换__stdcall,但它也会出现警告信息。

1 个答案:

答案 0 :(得分:6)

这两个都是IA32的非标准历史微软包袱(它们实际上是C和C ++的非便携,符合标准的扩展,由微软的编译器和GCC实现的互操作性),* NIX世界有 - 从来没有需要。

对于您将遇到的所有ARM系统(以及所有Android系统),调用约定由ARM Procedure Call Standard决定。毫不奇怪,没有相同的ARM,因为没有必要。

您最好的做法是使用空的宏来消除它们。

#define __cdecl
#define __stdcall