c++ - 已部署的 Mac 应用程序无法在 2014 年底之前的 Mac 上打开

标签 c++ macos qt

我已经部署了一个 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/

相关文章:

c++ - 在 Qt 中的数据类(模型)和 View / Controller 类之间传递数据的正确方法是什么?

c++ - switch case 语句在 Arduino/C++ 中的工作原理

debugging - bash 的图形化调试器

c++ - 使用外部模板 (C++11)

macos - 如何从 Mac 卸载 Sencha Cmd v6.0.0.202?

macos - 创建右对齐的 NSView

c++ - Qpushbutton点击并不总是有效

c++ - 编译 RtMidi - Qt 项目、mingw

c++ - MinGW-w64 g++ 是否公开了 Microsoft ucrt 对 C11 `getenv_s` 函数的实现?如果是,要包含什么标题?

C++ 错误 C2059