2014-09-30 94 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位助手進程交談。

相關問題