Phi*_*ldo 5 c++ macos android sdl include
我正在制作一款需要访问ifaddrs.h的SDL安卓游戏.当我为mac编译时,它工作正常.当我为Android编译时,它说找不到文件.
我试图像这样包含它:
#include <ifaddrs.h>
Run Code Online (Sandbox Code Playgroud)
所以我
gcc -M network.cpp
Run Code Online (Sandbox Code Playgroud)
找到它所包含的文件的依赖项,所以我可以找到ifaddrs的绝对位置,即
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/ifaddrs.h
Run Code Online (Sandbox Code Playgroud)
所以,当我
#include "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/ifaddrs.h"
Run Code Online (Sandbox Code Playgroud)
它找到它,但然后错误包括ifaddrs的一些其他依赖
#include <AvailabilityInternal.h>
Run Code Online (Sandbox Code Playgroud)
好.那么,当我尝试为android vs for mac编译时,为什么包含行为会有所不同?(在mac上使用ndkbuild或g ++)?我怎样才能让它在Android上运行?我想念的是什么知识/信息?
(注意 - 目前正在运行OSX优胜美地,10.10)
您无法使用适用于Android的MacOSX.不同的平台,不同的SDK.
Android没有自己的本机ifaddrs.h实现(因此没有该getifaddrs()功能).但是,有第三方实施可用:
https://github.com/kmackay/android-ifaddrs
https://github.com/morristech/android-ifaddrs
https://www.openhub.net/p/android-ifaddrs/
Android的getifaddrs()实现,因为NDK本身不支持它.
就像您在常规Linux上所期望的那样工作.
ifaddrs.h官方支持从 Android API 级别 24(Android 7.0 Nougat)开始,因此,如果您针对此 SDK,则不再需要自定义实现。
如果你的目标是旧版本,ifaddrs.h谷歌有实现,你可以在Android源代码中找到它;最有趣的是 Gingerbread 实现,因为它只是 C++ 头文件之一,所以你不需要将它添加到你的项目中或编译为一个单独的库,只需将它添加到你的包含和使用中。
Android Gingerbreadifaddrs.h实现文件 URL 如下:
它取决于您可以在同一存储库中轻松找到的另外 2 个包含文件。ifaddrs.h其他 Android 版本源中也有其他实现,但是,它们不仅仅是标题,因此它们的集成需要一个额外的步骤。
我在 4 台设备(Android 5.0、6.0、7.0 和 9.0)上测试了 Gingerbread 实现,我没有任何问题。
| 归档时间: |
|
| 查看次数: |
5727 次 |
| 最近记录: |