问题: 我需要将我的项目从OSX10.5 -32位升级到OSX 10.11 - 64位。在升级时,我遇到了许多错误(C99中函数“”的隐式解密“在OS X 10.11 SDK for 64位模式中已被弃用)。这些功能中很少有:
CopyCStringToPascal()
CopyPascalStringToPascal()
FSOpenResFile()
FSMakeFSSpec()
GetDateTime()
SecondsToDate()
BlockMove()
......和类似的功能。
这些功能来自OS SDK,最新的SDK已经发布
#if !__LP64__
..
.
..
#endif
在头文件中保护他们的声明。
一种方法是编写在64位模式下调用新函数的包装器,在32位模式下调用旧函数。 我想知道是否还有另一种简短(容易)的方式从这里开始。
感谢。
答案 0 :(得分:0)
回答基本问题:其中一些功能支持64位支持。
CFString
或NSString
GetDateTime()
:查看CFAbsoluteTimeGetCurrent()
或NSDate
类SecondsToDate()
:查看CFCalendar
或NSCalendar
BlockMove()
:使用memmove()
但是,任何使用旧API的Mac应用程序都可以追溯到经典的Mac OS时代,并且还使用不会直接替换为64位可用API的API。例如,FSSpec
数据类型和使用它的所有函数都消失了。 QuickDraw,ATSUI,Open Transport,HIToolbox,外观管理器以及所有与GUI相关的API都不见了。
要使用这些API在Mac上运行64位,需要进行大量重写。作为第一步,您可以针对32位的10.11 SDK编译您的应用程序吗?是否真的需要才能成为64位,至少现在呢?