gpt4 book ai didi

objective-c - 使用 osx 10.11 sdk 构建时用于 64 位模式的 CopyCStringToPascal() 替代方案

转载 作者:行者123 更新时间:2023-11-30 16:51:19 26 4
gpt4 key购买 nike

问题:我需要将我的项目从 OSX10.5 -32 位升级到 OSX 10.11 - 64 位。升级时,对于许多在 64 位模式的 OS X 10.11 SDK 中已弃用的函数,我遇到了错误(函数“”的隐式声明在 C99 中无效)。其中一些功能是:

CopyCStringToPascal()
CopyPascalStringToPascal()
FSOpenResFile()
FSMakeFSSpec()
GetDateTime()
SecondsToDate()
BlockMove()

...以及类似的功能。

这些功能来自OS SDK,最新的SDK已经添加了

#if !__LP64__ 
..
.
..
#endif

在头文件中保护它们的声明。

一种方法是编写包装器,在 64 位模式下调用新函数,在 32 位模式下调用旧函数。我想知道是否还有另一种简短(且简单)的方法可以从这里开始。

谢谢。

最佳答案

回答您的基本问题:其中一些函数有 64 位支持的替代品。

  • 字符串:使用 CFStringNSString
  • GetDateTime():查看 CFAbsoluteTimeGetCurrent()NSDate
  • SecondsToDate():查看 CFCalendarNSCalendar
  • BlockMove():使用memmove()

但是,任何使用如此古老的 API 的 Mac 应用程序都可能可以追溯到经典的 Mac OS 时代,并且使用的 API 也无法直接替换为 64 位可用的 API。例如,FSSpec 数据类型和所有使用它的函数都消失了。 QuickDraw、ATSUI、Open Transport、HIToolbox、外观管理器以及所有与 GUI 相关的 API 都消失了。

要让使用这些 API 的应用程序在 Mac 上运行 64 位,需要进行大量重写。第一步,您能否针对 32 位 10.11 SDK 编译您的应用程序?至少现在,它真的需要是 64 位吗?

关于objective-c - 使用 osx 10.11 sdk 构建时用于 64 位模式的 CopyCStringToPascal() 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41827758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com