我已经部署了一个 Mac 应用程序,它在 2014 年末或之后生产的 Mac 上运行良好(操作系统似乎无关紧要,因为运行 High Sierra 的旧 Mac 仍然无法运行该应用程序),但对于旧 Mac,它总是因此错误而崩溃:
ImagineyeFree 意外退出
注释:易位过程
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Illegal instruction: 4
Termination Reason: Namespace SIGNAL, Code 0x4
Terminating Process: exc handler [0]
我该如何解决这个问题?该应用程序是用 QT 编写的,并使用 64 位库……所有 Mac 都比 2014 年末更早,都是 32 位的吗?那么 64 位应用程序将无法在它们上运行?
我的 QT .pro 文件中有这一行
大于(QT_MAJOR_VERSION,4)
...这有什么不同吗?
谢谢
最佳答案
问题是您使用比这些计算机所拥有的更新的 XCode 编译代码,并且您没有针对旧版本的 macOS/OS X。
请记住,较旧的 Mac 无法升级到最新的 macOS,甚至有些人更喜欢保留旧版本。在这种情况下,如果您没有明确地将部署目标设置为 10.11,则低于默认值(即您当前拥有的 macOS)的所有内容都将无法执行您的代码。
较新的编译器也会使用与旧 CPU 不兼容的指令,因此还要确认您没有使用任何"new"指令集,例如 AVX。
关于c++ - 已部署的 Mac 应用程序无法在 2014 年底之前的 Mac 上打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53087105/