有没有办法以编程方式检测/确定二进制文件(与我的应用程序分开)是否已编译为 i386、x86_x64 或两者?我想有一种方法(显然),虽然我真的不知道怎么做。任何建议或建议将不胜感激,谢谢。
编辑:我在 Apple 开发者网站上找到了一个示例,尽管它是用 C 语言编写的,并且设置更多地用作命令行工具。如果有人知道如何将它实现到我的 Objective-C 代码中,那将非常有帮助。
- 示例 [C] 代码:CheckExecutableArchitecture
有没有办法以编程方式检测/确定二进制文件(与我的应用程序分开)是否已编译为 i386、x86_x64 或两者?我想有一种方法(显然),虽然我真的不知道怎么做。任何建议或建议将不胜感激,谢谢。
编辑:我在 Apple 开发者网站上找到了一个示例,尽管它是用 C 语言编写的,并且设置更多地用作命令行工具。如果有人知道如何将它实现到我的 Objective-C 代码中,那将非常有帮助。
您可以包含mach-o
标头并简单地加载二进制文件,然后检查mach_header
. 您应该阅读 Apple 的 Mach-O 格式说明以获取更多信息,它包括您需要的一切:http: //developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html
- (void)checkArchitecture {
NSArray *bundleArch = [[NSBundle bundleWithPath:@"/path/to/other/bundle"] executableArchitectures];
}