无符号长,支持 64 位 iOS 和 OSX
Unsigned Long to support 64 bit iOS & OSX
对于我的iOS&OS X C++库,数据类型unsigned long在64位环境中造成问题。它在32位体系结构中运行良好。在GCC中,请阅读-mx32编译器标志,它将把所有64位数据类型处理为32位。在iOS&对于llvm的OS X,是否存在任何这样的标志来支持32位架构中的无符号长。我已经尝试在Complier Flags部分添加-mx32标志,无符号长的大小仍然打印为8。
谢谢。
long
的大小由平台ABI定义。苹果公司宣布,您必须支持他们的64位ABI:
- Mac应用程序的64位要求
在WWDC 2017上,我们宣布从2018年1月开始,提交到Mac应用商店的新应用程序必须支持64位,而Mac应用程序更新和现有应用程序必须从2018年6月开始支持64位。如果您在Mac应用商店之外分发应用程序,我们强烈建议您分发64位二进制文件,以确保您的用户可以在未来版本的macOS上继续运行您的应用程序。macOS High Sierra将是最后一个毫不妥协地支持32位应用程序的macOS版本。
- iOS 11上的64位应用程序
提醒您,提交到应用商店的新iOS应用程序和更新必须支持64位。iOS 11中不支持32位应用程序,以前安装在用户设备上的所有32位应用都不会启动。如果你还没有在应用商店更新你的应用程序以支持64位,我们建议你提交一份更新,这样你的用户就可以继续在iOS 11上运行你的应用,今年秋天,iOS 11将掌握在数亿客户手中。
这意味着回到仅32位的构建在短期内将不起作用。从理论上讲,可以构建一个外部有64位ABI,但内部有不同类型大小的自定义编译器。OpenJDK在内部做到了这一点,GNU工具链在x86-64上支持类似的东西(尽管它仍然需要内核支持,所以它不是Darwin的选项)。但这是一项艰巨的工作,需要对系统标题进行大量调整。
不幸的是,您最好的选择是用uint32_t
之类的可移植类型替换软件中的unsigned long
。
- 使用ios:ate写入到流会覆盖现有文件
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- 如何访问RTCVideoRenderer的帧?(ios)
- ios::fmtflags 在 C++ 中是如何工作的?setf() 是如何工作的?
- OSX蓝牙打开RFCOMMChannelAsync声称已连接,但未建立连接,并且从未调用过委托
- 我可以在 iOS 或 mac 应用程序中使用C++代码吗?
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 为什么 C++ 11 在 ios 类中添加了运算符 bool
- C ++是否有C ++ 17 OSX 10.13.6的标志
- 'string'文件在带有C++文件的iOS插件上找不到
- 各种版本的 Mac OSX 向后兼容性如何?(Xcode C++
- OSX clang++:用于 cpp 文件中显式实例化模板的体系结构x86_64的未定义符号
- 文件模式标志"ios::app"是否用于删除文件(如果文件已存在)?
- 在 OSX 上打开 SDL 窗口时不要打开终端窗口
- 使用 C++ iOS::ate 获取错误的文件大小
- 使用 适用于 Android 和 iOS 的 tf-lite C++ API
- 无符号长,支持 64 位 iOS 和 OSX
- Direct2D 等效于 IOS OSX 开发
- OSX和iOS数据类型大小