【问题标题】:Can a 32bit only MacOS Application use 64bit-only Frameworks?仅 32 位 MacOS 应用程序可以使用仅 64 位框架吗?
【发布时间】:2014-11-25 13:10:28
【问题描述】:

我们的 Mac 应用程序(很遗憾)只能在 32 位上构建和运行。原因是:一大堆非常古老的仅限 32 位的 C++ 代码与其他平台(Windows、Android、Linux 等)共享。这是跨服务器-客户端网络-协议代码,因此无法真正替换。在每个人都需要 64 位之前,我们只能构建 32 位的应用程序。

现在我正在为这个应用程序构建一个新模块作为外部私有动态框架。我想使用 ARC 以及现代 Obj-C 运行时的新特性,但这些仅在 64 位版本中可用。

那么……我的 32 位 Mac 应用程序可以链接、使用和加载仅 64 位的框架吗?

【问题讨论】:

  • Stackoverflow 不允许只回答两个字母。

标签: objective-c macos frameworks 32bit-64bit


【解决方案1】:

嗯,我找到了答案,总的来说是 --- NO

以下是详细信息和解决方法。

首先,32 位进程无法加载 64 位代码。当您尝试将 64 位框架链接到您的 32 位应用程序时,链接器会报错。

我被提供了两种解决方法,都依赖于将纯 32 位代码和纯 64 位代码分成 2 个不同的进程,使用 XPC 进行通信。

第一种方法是创建一个“宿主”64 位进程,它将加载我的 64 位框架,然后 32 位应用程序可以使用 XPC 与之对话。

第二个选项是提取所有 64 位不安全代码(我必须仅编译 32 位)并将其放入一个特殊的仅 32 位进程中,然后我可以在 Mac 上使我的应用程序仅 64 位,添加新框架,并通过 XPC 与 32 位辅助进程对话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-12
    • 2020-02-12
    • 2011-08-03
    • 2010-11-05
    • 1970-01-01
    • 2012-06-18
    • 2012-02-02
    • 2014-06-20
    相关资源
    最近更新 更多