只有32位的MacOS应用程序才能使用仅64位的框架吗?

时间:2014-09-30 19:38:55

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

我们的Mac应用程序(遗憾地)只能构建并运行在32位版本中。原因是:与其他平台(Windows,Android,Linux等)共享的大量非常旧的32位C ++代码。这是跨服务器 - 客户端网络协议代码,因此无法真正替换它。直到每个人都需要64位,我们必须只构建我们的应用程序32位。

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

那么......我的32位Mac应用程序可以链接,使用并加载一个仅64位的框架吗?

1 个答案:

答案 0 :(得分:0)

好吧,我找到了答案,总的来说--- NO

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

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

我有两种方法可以解决这个问题,它们都依赖于将32位代码和64位代码分成2个不同的进程,使用XPC进行通信。

第一种方法是创建一个"主机" 64位进程将加载我的64位框架,然后32位应用程序可以使用XPC与它通信。

第二个选项是提取所有64位不安全的代码(我必须编译32位专用的东西)并将THAT放在一个特殊的32位进程中然后我只能在Mac上创建我的64bit应用程序,添加新的框架,并通过XPC与32位辅助进程通信。