为android编译SDL时未找到ifaddrs.h标头

为android编译SDL时未找到ifaddrs.h标头,android,c++,macos,include,sdl,Android,C++,Macos,Include,Sdl,我正在用SDL制作一个android游戏,需要访问ifaddrs.h。当我为mac编译时,它工作得很好。当我为Android编译时,它说找不到文件 我试图将其包括在内,如下所示: #include <ifaddrs.h> 为了找到它所包含的文件的依赖关系,我可以找到IFADRS的绝对位置,即 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.

我正在用SDL制作一个android游戏,需要访问ifaddrs.h。当我为mac编译时,它工作得很好。当我为Android编译时,它说找不到文件

我试图将其包括在内,如下所示:

#include <ifaddrs.h>
为了找到它所包含的文件的依赖关系,我可以找到IFADRS的绝对位置,即

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/ifaddrs.h
所以当我

#include "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/ifaddrs.h"
它找到了它,但在包含IFADRS的某些其他依赖项时出错

#include <AvailabilityInternal.h>
#包括
嗯。那么,为什么当我尝试为android和mac编译时,include行为会有所不同呢?(在mac上使用ndkbuild或g++)?我如何让它在android上工作?我缺少什么样的知识/信息才能让这一切都有意义


(注意-目前正在运行OSX yosemite,10.10)

您不能在Android上使用MacOSX includes。不同的平台,不同的SDK

Android没有自己的原生
ifaddrs.h
实现(因此没有
getifaddrs()
函数)。但是,有一个第三方实现:



Android的GetIFADRS()实现,因为NDK本机不支持它

就像您在普通Linux上所期望的那样工作


从Android API级别24(Android 7.0 Nougat)开始,
ifadrs.h
得到官方支持,因此,如果您以该SDK为目标,就不再需要自定义实现

如果你的目标是旧版本,谷歌有
ifaddrs.h
实现,你可以在Android源代码中找到它;最有趣的是姜饼实现,因为它是C++头文件,所以你不需要把它添加到你的项目中或者编译成一个单独的库,只需把它添加到你的包含中,就可以使用.< Android Gingerbread
ifaddrs.h
实现文件URL如下:

它取决于您可以在同一存储库中轻松找到的其他两个包含文件。在其他Android版本源中也有其他
ifaddrs.h
实现,但是,它们不仅仅是头文件,因此它们的集成需要一个额外的步骤


我用4台设备(Android 5.0、6.0、7.0和9.0)测试了姜饼的实现,我没有遇到任何问题。

oh my。非常感谢你!不知道我怎么会在搜索中没有发现。问这个问题让我觉得很傻…存储库是404'ed。Fork可用,例如在。然而,正如所示,这不是最新版本。在我的设备上,当我通过WiFi连接时,morristech存储库中的代码会出现故障。我在一些Mozilla Beta测试版存储库中找到的文件工作得更好。为了让它正常工作,我必须删除
#if defined(ANDROID)
#endif
ifaddr
结构缺少成员
ifa_addr
ifa_dstaddr
。如果需要,将android_getifaddrs重命名为
getifaddrs
#include <AvailabilityInternal.h>