2014-09-30 60 views
1

我们的Mac应用程序可能(可惜)只能在32位版本中编译和运行。原因是:与其他平台(Windows,Android,Linux等)共享的一大堆非常旧的32位C++代码。这是跨服务器 - 客户端网络协议代码,所以它不能真正被替换。在所有人需要的都是64位之前,我们必须只构建我们的应用程序32位。32位唯一的MacOS应用程序是否可以使用64位框架?

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

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

+0

Stackoverflow不允许只有两个字母的答案。 – gnasher729 2014-10-01 09:45:30

回答

0

好吧,我找到了答案,这是总体上的--- NO

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

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

我提供了两种解决方法,都是依靠将32位专用代码和64位专用代码分成2个不同的进程,使用XPC进行对话。

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

第二个选择是提取所有64位不安全的代码(我必须编译32位的东西),并把它放在一个特殊的32位处理程序中,然后我可以只在Mac上创建我的应用程序64位,添加新的框架,并通过XPC与32位助手进程交谈。

相关问题