iOS   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在OSX上链接到iOS模拟器二进制文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我很好奇如果我在Mac应用程序中链接到iOS模拟器框架会发生什么.因此我将uIKit复制到它自己的文件夹(因此框架搜索路径不会包含所有iOS模拟器框架,就像CoreFoundation在Mac和iOS上都有不同的标题),并将其拖入 Xcode的链接部分. Xcode给我的错误是: building for MacOSX, but linking against dylib built for iO
我很好奇如果我在Mac应用程序中链接到iOS模拟器框架会发生什么.因此我将uIKit复制到它自己的文件夹(因此框架搜索路径不会包含所有iOS模拟器框架,就像CoreFoundation在Mac和iOS上都有不同的标题),并将其拖入 @L_616_4@的链接部分. @L_616_4@给我的错误是:

这两种体系结构都是x86_64,所以它怎么能告诉框架是专门针对iOS模拟器的,我在Info.plist之类的东西中删除了对iOS的所有引用,甚至尝试删除除UIKit二进制文件之外的所有内容,但同样的错误出现了.它自己的二进制文件中有什么东西可以告诉链接器它可以运行哪个平台,而不仅仅是架构?我查看了Mach-O标头但是只有cpu类型和子类型的字段,并且没有按预期的模拟器值.

@R_403_1964@

经过一些挖掘后,事实证明可以运行库的平台确实在二进制文件中指定.实际上,您可以在您喜欢的Hex编辑器中编辑二进制文件,并使链接器完全跳过此检查.

此信息未在Mach-O标头中指定(正如您已经意识到的那样).相反,它被指定为加载命令类型.您可以通过挖掘LLVM sources来查看可用的类型.具体来说,枚举值LC_VERSION_MIN_MACOSX和LC_VERSION_MIN_IPHONEOS看起来很有趣.

现在,在我们的二进制文件中找到它的偏移量.在MachOView(或任何其他编辑器/查看器或您选择的)中打开相同的内容并记下偏移量:

注意到偏移量后,在Hex编辑器中跳转到相同的位置并更新它.我将LC_VERSION_MIN_IPHONEOS(25)修改为LC_VERSION_MIN_MACOSX(24)

保存更新并再次尝试链接.错误应该消失.当然,当您尝试实际运行示例时,您将遇到其他问题.享受LLDB的乐趣然后:)

大佬总结

以上是大佬教程为你收集整理的在OSX上链接到iOS模拟器二进制文件全部内容,希望文章能够帮你解决在OSX上链接到iOS模拟器二进制文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。